!clu #3683 Change cluster heartbeat to req/rsp protocol

* The previous one-way hearbeat was elegant, but comlicated to
  understand and without giving much extra value compared to this approach.
* The previous one-way heartbeat have some kind of bug when joining
  several (10-20) nodes at approximately the same time (but not exactly
  the same time) with a false failure detection triggered by the extra heartbeat,
  which would not heal.
* This ping-pong approach will increase network traffic slightly, but heartbeat
  messages are small and each node is limited to monitor (default) 5 peers.
This commit is contained in:
Patrik Nordwall 2013-11-07 13:52:08 +01:00
parent 05f402c236
commit eaad7ecf7e
15 changed files with 350 additions and 439 deletions

View file

@ -52,10 +52,8 @@ class ClusterMessageSerializerSpec extends AkkaSpec(
checkSerialization(InternalClusterAction.InitJoin)
checkSerialization(InternalClusterAction.InitJoinAck(address))
checkSerialization(InternalClusterAction.InitJoinNack(address))
checkSerialization(ClusterHeartbeatReceiver.Heartbeat(address))
checkSerialization(ClusterHeartbeatReceiver.EndHeartbeat(address))
checkSerialization(ClusterHeartbeatReceiver.EndHeartbeatAck(address))
checkSerialization(ClusterHeartbeatSender.HeartbeatRequest(address))
checkSerialization(ClusterHeartbeatSender.Heartbeat(address))
checkSerialization(ClusterHeartbeatSender.HeartbeatRsp(uniqueAddress))
val node1 = VectorClock.Node("node1")
val node2 = VectorClock.Node("node2")