From fcd290cd9a2dca9770535c56aa1399c608b7ae0e Mon Sep 17 00:00:00 2001 From: Christian Hoffmeister Date: Fri, 24 Jun 2016 13:47:03 +0200 Subject: [PATCH] Remove distributed pubsub nodes on leave #20826 This ensures that gracefully leaving nodes (which would terminate after their own removed event) are already unregistered on all other pubsub nodes, before termination. --- .../akka/cluster/pubsub/DistributedPubSubMediator.scala | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala b/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala index 9689a4206d..899904f198 100644 --- a/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala +++ b/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala @@ -666,6 +666,12 @@ class DistributedPubSubMediator(settings: DistributedPubSubSettings) extends Act if (matchingRole(m)) nodes += m.address + case MemberLeft(m) ⇒ + if (matchingRole(m)) { + nodes -= m.address + registry -= m.address + } + case MemberRemoved(m, _) ⇒ if (m.address == selfAddress) context stop self