Fix false convergence when singleton cluster, see #2222

* All members must be in seen table for convergence
* Added extra debug logging due to convergence issues
* Enabled test of convergence for node joining singleton
  cluster
This commit is contained in:
Patrik Nordwall 2012-06-12 16:07:20 +02:00
parent 8d12385a3e
commit de1ad30217
3 changed files with 29 additions and 15 deletions

View file

@ -18,7 +18,7 @@ object MembershipChangeListenerJoinMultiJvmSpec extends MultiNodeConfig {
commonConfig(
debugConfig(on = false)
.withFallback(ConfigFactory.parseString("akka.cluster.leader-actions-interval = 5 s") // increase the leader action task interval to allow time checking for JOIN before leader moves it to UP
.withFallback(MultiNodeClusterSpec.clusterConfig)))
.withFallback(MultiNodeClusterSpec.clusterConfig)))
}
class MembershipChangeListenerJoinMultiJvmNode1 extends MembershipChangeListenerJoinSpec with FailureDetectorPuppetStrategy
@ -40,14 +40,13 @@ abstract class MembershipChangeListenerJoinSpec
val joinLatch = TestLatch()
cluster.registerListener(new MembershipChangeListener {
def notify(members: SortedSet[Member]) {
if (members.size == 2 && members.exists(_.status == MemberStatus.Joining)) // second node is not part of node ring anymore
if (members.size == 2 && members.exists(_.status == MemberStatus.Joining))
joinLatch.countDown()
}
})
testConductor.enter("registered-listener")
joinLatch.await
cluster.convergence.isDefined must be(true)
}
runOn(second) {
@ -55,6 +54,8 @@ abstract class MembershipChangeListenerJoinSpec
cluster.join(firstAddress)
}
awaitUpConvergence(2)
testConductor.enter("after")
}
}