diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterRemoteWatcher.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterRemoteWatcher.scala index 397f3a6da3..5dd1ed3da8 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterRemoteWatcher.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterRemoteWatcher.scala @@ -52,7 +52,6 @@ private[cluster] class ClusterRemoteWatcher( unreachableReaperInterval, heartbeatExpectedResponseAfter) { - private val arteryEnabled = RARP(context.system).provider.remoteSettings.Artery.Enabled val cluster = Cluster(context.system) import cluster.selfAddress @@ -91,9 +90,9 @@ private[cluster] class ClusterRemoteWatcher( def memberRemoved(m: Member, previousStatus: MemberStatus): Unit = if (m.address != selfAddress) { clusterNodes -= m.address - // TODO We should probably always quarantine when member is removed, - // but keeping old behavior for old remoting for now - if (arteryEnabled || previousStatus == MemberStatus.Down) { + // The reason we don't quarantine gracefully removed members (leaving) is that + // Cluster Singleton need to exchange TakeOver/HandOver messages. + if (previousStatus == MemberStatus.Down) { quarantine(m.address, Some(m.uniqueAddress.uid), s"Cluster member removed, previous status [$previousStatus]") } publishAddressTerminated(m.address)