Hardening of cluster member leaving path, see #3309

* Removed leader commands for Shutdown and Exit
* Member shutdown itself  when it sees itself as Exiting
* Singleton cluster with status Exiting will shutdown itself,
  in case the Exiting gossip never arrives
* Exiting member not part convergence check
* Exiting member is removed by leader (on convergence) when the
  exiting member is in the unreachable set, i.e. sucessfully shutdown
* Reverted the change made for #3266, i.e. Exiting is
  detected as unreachable again.
* Adjust ClusterSingletonManager to new Exiting behaviour
* Fix bug in HeartbeatSender, which caused it to continue to
  send heartbeats to removed nodes, instead of rebalancing
* Refactoring of leaderActions method
* Leaving section in docs
This commit is contained in:
Patrik Nordwall 2013-05-09 09:49:59 +02:00
parent 85954621ef
commit a0a0f39613
20 changed files with 338 additions and 340 deletions

View file

@ -18,12 +18,8 @@ object NodeLeavingAndExitingMultiJvmSpec extends MultiNodeConfig {
val second = role("second")
val third = role("third")
commonConfig(
debugConfig(on = false)
.withFallback(ConfigFactory.parseString("""
# turn off unreachable reaper
akka.cluster.unreachable-nodes-reaper-interval = 300 s""")
.withFallback(MultiNodeClusterSpec.clusterConfigWithFailureDetectorPuppet)))
commonConfig(debugConfig(on = false).
withFallback(MultiNodeClusterSpec.clusterConfigWithFailureDetectorPuppet))
}
class NodeLeavingAndExitingMultiJvmNode1 extends NodeLeavingAndExitingSpec
@ -63,9 +59,6 @@ abstract class NodeLeavingAndExitingSpec
}
enterBarrier("second-left")
val expectedAddresses = roles.toSet map address
awaitAssert(clusterView.members.map(_.address) must be(expectedAddresses))
// Verify that 'second' node is set to EXITING
exitingLatch.await