rethink cluster joining procedure
scenario:
possible solution:
- Join is sent from A to member B
- Welcome is sent from B to A but lost
- A is formally part of the cluster, will transition to UP and then UNREACHABLE
- the cluster cannot reach convergence without DOWNing A
- A cannot join the cluster anymore (because it is quarantined)
possible solution:
- make JOINING phase symmetric to LEAVING by adding a JOIN_REQUESTED which is similar to EXITING in its function, making sure that the transition to UP only happens if A has seen itself JOINING_REQUESTED
- possibly optimize this away by having A put itself into the Welcome gossip instead of letting B do it
Leave a comment