Disallow re-joining, see #2873

* Disallow join requests when already part of a cluster
* Remove wipe state when joining, since join can only be
  performed from empty state
* When trying to join, only accept gossip from that member
* Ignore gossips from unknown (and unreachable) members
* Make sure received gossip contains selfAddress
* Test join of fresh node with same host:port
* Remove JoinTwoClustersSpec
* Welcome message as reply to Join
* Retry unsucessful join request
* AddressUidExtension
* Uid in cluster Member identifier
  To be able to distinguish nodes with same host:port
  after restart.
* Ignore gossip with wrong uid
* Renamed Remove command to Shutdown
* Use uid in vclock identifier
* Update sample, Member apply is private
* Disabled config duration syntax and cleanup of io settings
* Update documentation
This commit is contained in:
Patrik Nordwall 2013-04-11 09:18:12 +02:00
parent cdf717e855
commit 9e56ab6fe5
35 changed files with 795 additions and 546 deletions

View file

@ -228,7 +228,7 @@ abstract class TransitionSpec
runOn(third) {
markNodeAsUnavailable(second)
reapUnreachable()
awaitAssert(clusterView.unreachableMembers must contain(Member(second, Up, Set.empty)))
awaitAssert(clusterView.unreachableMembers.map(_.address) must contain(address(second)))
awaitAssert(seenLatestGossip must be(Set(third)))
}
@ -237,7 +237,7 @@ abstract class TransitionSpec
third gossipTo first
runOn(first, third) {
awaitAssert(clusterView.unreachableMembers must contain(Member(second, Up, Set.empty)))
awaitAssert(clusterView.unreachableMembers.map(_.address) must contain(address(second)))
}
runOn(first) {
@ -249,7 +249,7 @@ abstract class TransitionSpec
first gossipTo third
runOn(first, third) {
awaitAssert(clusterView.unreachableMembers must contain(Member(second, Down, Set.empty)))
awaitAssert(clusterView.unreachableMembers.map(_.address) must contain(address(second)))
awaitMemberStatus(second, Down)
awaitAssert(seenLatestGossip must be(Set(first, third)))
}