private static void HandleGracefulShutdownRequest <TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.GracefulShutdownRequest request) where TCoordinator : IShardCoordinator { if (!coordinator.GracefullShutdownInProgress.Contains(request.ShardRegion)) { if (coordinator.CurrentState.Regions.TryGetValue(request.ShardRegion, out var shards)) { coordinator.Log.Debug("Graceful shutdown of region [{0}] with shards [{1}]", request.ShardRegion, string.Join(", ", shards)); coordinator.GracefullShutdownInProgress = coordinator.GracefullShutdownInProgress.Add(request.ShardRegion); coordinator.ShutdownShards(request.ShardRegion, shards.ToImmutableHashSet()); } else { coordinator.Log.Debug("Unknown region requested graceful shutdown [{0}]", request.ShardRegion); } } }