-
Notifications
You must be signed in to change notification settings - Fork 78
Closed
Labels
1 - triagedTicket makes sense and is well defined, ready to be worked onTicket makes sense and is well defined, ready to be worked ont:cluster:swim
Milestone
Description
We have high and low level (SWIM) membership -- the low one is not really "useful" for us, as we have stronger guarantees on the high level.
When we get gossip payloads in SWIM which include nodes we have not YET seen currently we do ensureAssociated -- which may cause connection establishment. This is meh.
It is meh because:
- if we got a ack-req for a node we don't know yet, it is quite likely that it is already dead or is going down -- thus trying to open a connection to perform an ping/ack with it is kind of weird. An accidental req can cause us to add members in joining status which may be incorrect -- the node may already be in a more progressed status in the high level.
- it was in a payload, and randomly selected to be included there; we dont care about such node:
- if it is alive, that's nice, but we do not want to add it to high level membership; let the high level join it at the right status
- if it is suspect or dead; then it is likely we should not be trying to connect to it anyway (if dead ofc, but also if suspect, let members of the cluster determine if they can reach it, not us try to make up evidence)
Proposal:
- ignore requests to ping, and payloads, nodes which we do not know about in SWIM.
- members are ONLY added to membership and put into consideration when they are informed to us in the high level membership or joined manually (which is the same thing kind of)
This means that we indeed use SWIM only in it's prime utility -- failure detection -- which indeed was always the plan, but until recently we didnt have a full complete high level implemented, so we used it to get us off the ground.
Metadata
Metadata
Assignees
Labels
1 - triagedTicket makes sense and is well defined, ready to be worked onTicket makes sense and is well defined, ready to be worked ont:cluster:swim