Add previousStatus in MemberRemoved, see #3252

This commit is contained in:
Patrik Nordwall 2013-05-23 11:09:32 +02:00
parent f3f55d4972
commit ee6e80d31a
15 changed files with 39 additions and 42 deletions

View file

@ -11,7 +11,6 @@ import akka.cluster.ClusterEvent.CurrentClusterState
import akka.cluster.ClusterEvent.MemberEvent
import akka.cluster.ClusterEvent.MemberUp
import akka.cluster.ClusterEvent.MemberRemoved
import akka.cluster.ClusterEvent.UnreachableMember
import akka.remote.FailureDetectorRegistry
import akka.remote.RemoteWatcher
@ -63,7 +62,6 @@ private[cluster] class ClusterRemoteWatcher(
override def preStart(): Unit = {
super.preStart()
cluster.subscribe(self, classOf[MemberEvent])
cluster.subscribe(self, classOf[UnreachableMember])
}
override def postStop(): Unit = {
@ -79,24 +77,18 @@ private[cluster] class ClusterRemoteWatcher(
case state: CurrentClusterState
clusterNodes = state.members.collect { case m if m.address != selfAddress m.address }
clusterNodes foreach takeOverResponsibility
val clusterUnreachable = state.unreachable.collect { case m if m.address != selfAddress m.address }
unreachable --= clusterNodes
unreachable ++= clusterUnreachable
case MemberUp(m)
if (m.address != selfAddress) {
clusterNodes += m.address
takeOverResponsibility(m.address)
unreachable -= m.address
}
case UnreachableMember(m)
if (m.address != selfAddress)
unreachable += m.address
case MemberRemoved(m)
case MemberRemoved(m, previousStatus)
if (m.address != selfAddress) {
clusterNodes -= m.address
if (unreachable contains m.address) {
if (previousStatus == MemberStatus.Down) {
quarantine(m.address, m.uniqueAddress.uid)
unreachable -= m.address
}
publishAddressTerminated(m.address)
}