private static ShardMapManager createSqlShardMapManagerImpl()

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);
        }
    }