Returns the current selfContactPoints
as a String for logging, e.g.
Returns the current selfContactPoints
as a String for logging, e.g. [127.0.0.1:64714].
Decide if and how to join based on the gathered SeedNodesInformation.
Decide if and how to join based on the gathered SeedNodesInformation.
The returned JoinDecision
can be KeepProbing, JoinSelf or JoinOtherSeedNodes.
May be overridden by subclass to decide if enough contact points have been discovered.
May be overridden by subclass to decide if enough contact points have been discovered.
info.contactPoints.size
is the number of discovered (e.g. via DNS lookup) contact points
and info.seedNodesObservations.size
is the number that has been confirmed that they are
reachable and running.
Checks for both host name and IP address for discovery mechanisms that return both.
Checks for both host name and IP address for discovery mechanisms that return both.
May be overridden by subclass to allow joining self even though some of the discovered contact points have not been confirmed (unreachable or not running).
May be overridden by subclass to allow joining self even though some of the discovered
contact points have not been confirmed (unreachable or not running).
hasEnoughContactPoints
and isPastStableMargin
must still be fulfilled.
May be overridden by subclass to decide if the set of discovered contact points is stable.
May be overridden by subclass to decide if the set of discovered contact points is stable.
info.contactPointsChangedAt
was the time when the discovered contact points were changed
last time. Subsequent lookup attempts after that returned the same contact points.
May be overridden by subclass to extract the nodes to use as seed nodes when joining existing cluster.
May be overridden by subclass to extract the nodes to use as seed nodes when joining
existing cluster. info.allSeedNodes
contains all existing nodes.
If the returned Set
is empty it will continue probing.
Contact point with the "lowest" contact point address, it is expected to join itself if no other cluster is found in the deployment.
Contact point with the "lowest" contact point address, it is expected to join itself if no other cluster is found in the deployment.
May be overridden by subclass for example if another sort order is desired.
The decision of joining "self" is made by deterministically sorting the discovered services and picking the *lowest* address. Only the node with lowest address joins itself.
If any of the contact-points returns a list of seed nodes it joins the existing cluster immediately.
Joining "self" is only done when enough number of contact points have been discovered (
required-contact-point-nr
) and there have been no changes to the discovered contact points during thestable-margin
.There must also be seed node observations from all discovered contact points before joining "self".