in elastic-db-tools/src/main/java/com/microsoft/azure/elasticdb/shard/mapmanager/ShardMapManagerFactory.java [157:212]
private static ShardMapManager createSqlShardMapManagerImpl(String connectionString,
ShardMapManagerCreateMode createMode,
RetryBehavior retryBehavior,
EventHandler<RetryingEventArgs> retryEventHandler,
Version targetVersion) {
ExceptionUtils.disallowNullArgument(connectionString, "connectionString");
ExceptionUtils.disallowNullArgument(retryBehavior, "retryBehavior");
if (createMode != ShardMapManagerCreateMode.KeepExisting && createMode != ShardMapManagerCreateMode.ReplaceExisting) {
throw new IllegalArgumentException(StringUtilsLocal.formatInvariant(Errors._General_InvalidArgumentValue, createMode, "createMode"),
new Throwable("createMode"));
}
try (ActivityIdScope activityIdScope = new ActivityIdScope(UUID.randomUUID())) {
log.info("ShardMapManagerFactory CreateSqlShardMapManager Start; ");
Stopwatch stopwatch = Stopwatch.createStarted();
SqlShardMapManagerCredentials credentials = new SqlShardMapManagerCredentials(connectionString);
RetryPolicy retryPolicy = new RetryPolicy(new ShardManagementTransientErrorDetectionStrategy(retryBehavior),
RetryPolicy.getDefaultRetryPolicy().getExponentialRetryStrategy());
EventHandler<RetryingEventArgs> handler = (sender,
args) -> {
if (retryEventHandler != null) {
retryEventHandler.invoke(sender, new RetryingEventArgs(args));
}
};
try {
retryPolicy.retrying.addListener(handler);
// specifying targetVersion as GlobalConstants.GsmVersionClient
// to deploy latest store by default.
try (IStoreOperationGlobal op = (new StoreOperationFactory()).createCreateShardMapManagerGlobalOperation(credentials, retryPolicy,
"CreateSqlShardMapManager", createMode, targetVersion)) {
op.doGlobal();
}
catch (Exception e) {
e.printStackTrace();
ExceptionUtils.throwStronglyTypedException(e);
}
stopwatch.stop();
log.info("ShardMapManagerFactory CreateSqlShardMapManager Complete; Duration:{}", stopwatch.elapsed(TimeUnit.MILLISECONDS));
}
finally {
retryPolicy.retrying.removeListener(handler);
}
return new ShardMapManager(credentials, new SqlStoreConnectionFactory(), new StoreOperationFactory(), new CacheStore(),
ShardMapManagerLoadPolicy.Lazy, RetryPolicy.getDefaultRetryPolicy(), retryBehavior, retryEventHandler);
}
}