Пример #1
0
 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);
         }
     }
 }