Stress / long running test of cluster, see #2786
* akka.cluster.StressSpec * Configurable number of nodes and duration for each step * Report metrics and phi periodically to see progress * Configurable payload size * Test of various join and remove scenarios * Test of watch * Exercise supervision * Report cluster stats * Test with many actors in tree structure Apart from the test this commit also solves some issues: * Avoid adding back members when downed in ClusterHeartbeatSender * Avoid duplicate close of ClusterReadView * Add back the publish of AddressTerminated when MemberDowned/Removed it was lost in merge of "publish on convergence", see #2779
This commit is contained in:
parent
7944b456fc
commit
f147f4d3d2
12 changed files with 1112 additions and 24 deletions
|
|
@ -284,18 +284,24 @@ private[cluster] final class ClusterDomainEventPublisher extends Actor with Acto
|
|||
// keep the latestGossip to be sent to new subscribers
|
||||
latestGossip = newGossip
|
||||
// first publish the diffUnreachable between the last two gossips
|
||||
diffUnreachable(oldGossip, newGossip) foreach { event ⇒
|
||||
publish(event)
|
||||
// notify DeathWatch about unreachable node
|
||||
publish(AddressTerminated(event.member.address))
|
||||
}
|
||||
diffUnreachable(oldGossip, newGossip) foreach publish
|
||||
// buffer up the MemberEvents waiting for convergence
|
||||
memberEvents ++= diffMemberEvents(oldGossip, newGossip)
|
||||
// if we have convergence then publish the MemberEvents and possibly a LeaderChanged
|
||||
if (newGossip.convergence) {
|
||||
val previousConvergedGossip = latestConvergedGossip
|
||||
latestConvergedGossip = newGossip
|
||||
memberEvents foreach publish
|
||||
memberEvents foreach { event ⇒
|
||||
event match {
|
||||
case m @ (MemberDowned(_) | MemberRemoved(_)) ⇒
|
||||
// TODO MemberDowned match should probably be covered by MemberRemoved, see ticket #2788
|
||||
// but right now we don't change Downed to Removed
|
||||
publish(event)
|
||||
// notify DeathWatch about downed node
|
||||
publish(AddressTerminated(m.member.address))
|
||||
case _ ⇒ publish(event)
|
||||
}
|
||||
}
|
||||
memberEvents = immutable.Seq.empty
|
||||
diffLeader(previousConvergedGossip, latestConvergedGossip) foreach publish
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue