To fix LEADER leaving and allow handoff to new leader before moving old leader from EXITING -> REMOVED.
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
- Removed REMOVED as explicit valid member state
- Implemented leader moving either itself or other member from EXITING -> REMOVED
- Added sending Remove message for removed node to shut down itself
- Fixed a few bugs
- Removed 'remove' from Cluster and JMX interface
- Added bunch of ScalaDoc
- Added isRunning method
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
The problem:
* Node that is Up joins a cluster and becomes Joining in that cluster
* The joining node receives gossip, which results in conflict,
merge results in Up
* It became Up in the new cluster without passing the ordinary leader
action to move it to Up
The solution:
* Change priority order of Up and Joining so that Joining is used when
merging
* Merge unreachable using highestPriorityOf
* Avoid merge result in node existing in both members and unreachable
* Fix joining only allowed when !alreadyMember && !isUnreachable (non Down)
* Fix filter bug of unreachable in downing and leaderActions
* Minor cleanups
* 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
- Moved FailureDetectorPuppet to its own file in src/test.
- Removed 'phi' method from FailureDetector public API.
- Throwing exception instead of falling back to default if we can't load the custom FD.
- Removed add-connection method in FailureDetectorPuppet.
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
- Abstracted a FailureDetector trait.
- Added a FailureDetectorPuppet mock that can be user controllable
- Added option to define a custom failure detector
- Misc minor fixes
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
* ClusterSpec
- Test gossiping rules for deputies and unreachable
- Fix strange/wrong probabilites for gossip to unreachable and deputy nodes
- Fix lost order of Members when using map (without .toSeq) on the members SortedSet
* MemberSpec
- Test equals, hashCode
* GossipSpec
- Test member merge by status prio
- Fix bug in member merge (groupBy was wrong)
- Renamed all 'frequency' to 'interval'
- Split up NodeJoinAndUpSpec and into NodeJoinSpec and NodeUpSpec.
- Split up MembershipChangeListenerJoinAndUpSpec and into MembershipChangeListenerJoinSpec and MembershipChangeListenerUpSpec.
- Added utility method 'startClusterNode()'
- Fixed race in register listener and telling node to leave
- Removed 'after' blocks
- Cleaned up unused code
- Improved comments
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
* Added implementation of the LEAVE command for a cluster node
* Changed the meaning of Member.isUnavailable to only DOWN and REMOVED
* Removed EXIT and UP as user commands
* Fixed Cluster.self to fall back to checking for itself in the gossip.overview.unreachable set.
* Added Leader action transitioning from LEAVING -> EXITING
* Improved comments
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>