private void Handle(ClusterActorDiscoveryMessage.ActorDown m) { _log.Info($"Table.ActorDown (Actor={m.Actor.Path})"); if (_table.Equals(m.Actor)) { _table = null; } else { _log.Error($"But I have a different table. (Actor={_table.Path})"); } // TODO: Shutdown all actors }
private void Handle(ClusterActorDiscoveryMessage.ActorDown m) { _log.Info($"Container.ActorDown (Actor={m.Actor.Path})"); if (_containerMap.TryGetValue(m.Actor, out var container) == false) { _log.Error($"I don't have that container. (Actor={m.Actor.Path})"); return; } _containerMap.Remove(m.Actor); RebuildContainerWorkQueue(); // Remove all actors owned by this container foreach (var(key, actorRef) in container.ActorMap) { _actorMap.Remove(key); if (actorRef != null) { continue; } // cancel all pending creating requests if (!_creatingMap.TryGetValue(key, out var creating)) { continue; } _creatingMap.Remove(key); foreach (var r in creating.Requesters) { r.Item1.Tell(CreateReplyMessage(r.Item2, key, null, false)); } } // When stopping done, ingest poison pill if (_stopping && _containerMap.Count == 0) { Context.Stop(Self); } }
private void Handle(ClusterActorDiscoveryMessage.ActorDown m) { _log.Info($"Table.ActorDown (Actor={m.Actor.Path})"); if (_table.Equals(m.Actor) == false) { _log.Error($"But I have a different table. (Actor={_table.Path})"); return; } _table = null; CancelAllPendingAddRequests(); foreach (var i in _actorMap) { i.Value.Tell(_downMessage ?? PoisonPill.Instance); } // NOTE: should we clear actor map or let them to be removed ? }