+ LOG.error("Interrupted while waiting for shards to settle", e);
+ }
+ }
+
+ private ActorRef createShardManager(ActorSystem actorSystem, ClusterWrapper cluster, Configuration configuration,
+ DatastoreContextFactory datastoreContextFactory, String shardDispatcher,
+ String shardManagerId, PrimaryShardInfoFutureCache primaryShardInfoCache){
+ Exception lastException = null;
+
+ for(int i=0;i<100;i++) {
+ try {
+ return actorSystem.actorOf(
+ ShardManager.props(cluster, configuration, datastoreContextFactory, waitTillReadyCountDownLatch,
+ primaryShardInfoCache).withDispatcher(shardDispatcher).withMailbox(
+ ActorContext.MAILBOX), shardManagerId);
+ } catch (Exception e){
+ lastException = e;
+ Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
+ LOG.debug(String.format("Could not create actor %s because of %s - waiting for sometime before retrying (retry count = %d)", shardManagerId, e.getMessage(), i));
+ }