Looks up members of the same "service" in DNS and initiates HttpContactPointBootstrap's for each such node.
If any of the contact-points returns a list of seed nodes it joins them immediately.
If contact points do not return any seed-nodes for a contactPointNoSeedsStableMargin amount of time,
we decide that apparently there is no cluster formed yet in this deployment and someone as to become the first node
to join itself (becoming the first node of the cluster, that all other nodes will join).
The decision of joining "self" is made by deterministically sorting the discovered service IPs
and picking the *lowest* address.
If this node is the one with the lowest address in the deployment, it will join itself and other nodes will notice
this via the contact-point probing mechanism and join this node. Please note while the cluster is "growing"
more nodes become aware of the cluster and start returning the seed-nodes in their contact-points, thus the joining
process becomes somewhat "epidemic". Other nodes may get to know about this cluster by contacting any other node
that has joined it already, and they may join any seed-node that they retrieve using this method, as effectively
this will mean it joins the "right" cluster.
CAVEATS:
There is a slight timing issue, that may theoretically appear in this bootstrap process.
FIXME explain the races
Looks up members of the same "service" in DNS and initiates HttpContactPointBootstrap's for each such node. If any of the contact-points returns a list of seed nodes it joins them immediately.
If contact points do not return any seed-nodes for a
contactPointNoSeedsStableMargin
amount of time, we decide that apparently there is no cluster formed yet in this deployment and someone as to become the first node to join itself (becoming the first node of the cluster, that all other nodes will join).The decision of joining "self" is made by deterministically sorting the discovered service IPs and picking the *lowest* address.
If this node is the one with the lowest address in the deployment, it will join itself and other nodes will notice this via the contact-point probing mechanism and join this node. Please note while the cluster is "growing" more nodes become aware of the cluster and start returning the seed-nodes in their contact-points, thus the joining process becomes somewhat "epidemic". Other nodes may get to know about this cluster by contacting any other node that has joined it already, and they may join any seed-node that they retrieve using this method, as effectively this will mean it joins the "right" cluster.
CAVEATS: There is a slight timing issue, that may theoretically appear in this bootstrap process. FIXME explain the races