- LOG.debug("{} : Sending Shutdown to Shard actor {}", persistenceId(), shardActor);
- FiniteDuration duration = shardInformation.getDatastoreContext().getShardRaftConfig()
- .getElectionTimeOutInterval().$times(3);
- final Future<Boolean> stopFuture = Patterns.gracefulStop(shardActor, duration, Shutdown.INSTANCE);
- shardActorStoppingFutures.put(shardName, stopFuture);
- stopFuture.onComplete(new OnComplete<Boolean>() {
+ long timeoutInMS = Math.max(shardInformation.getDatastoreContext().getShardRaftConfig()
+ .getElectionTimeOutInterval().$times(3).toMillis(), 10000);
+
+ LOG.debug("{} : Sending Shutdown to Shard actor {} with {} ms timeout", persistenceId(), shardActor,
+ timeoutInMS);
+
+ final Future<Boolean> stopFuture = Patterns.gracefulStop(shardActor,
+ FiniteDuration.apply(timeoutInMS, TimeUnit.MILLISECONDS), Shutdown.INSTANCE);
+
+ final CompositeOnComplete<Boolean> onComplete = new CompositeOnComplete<Boolean>() {