class LowestAddressJoinDecider extends SelfAwareJoinDecider
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 the stable-margin
.
There must also be seed node observations from all discovered contact points before joining "self".
- Alphabetic
- By Inheritance
- LowestAddressJoinDecider
- SelfAwareJoinDecider
- JoinDecider
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new LowestAddressJoinDecider(system: ActorSystem, settings: ClusterBootstrapSettings)
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @HotSpotIntrinsicCandidate()
-
def
contactPointString(contactPoint: ResolvedTarget): String
- Attributes
- protected
- Definition Classes
- SelfAwareJoinDecider
-
def
contactPointString(contactPoint: (String, Int)): String
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].- Attributes
- protected
- Definition Classes
- SelfAwareJoinDecider
-
def
decide(info: SeedNodesInformation): Future[JoinDecision]
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.- Definition Classes
- LowestAddressJoinDecider → JoinDecider
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
hasEnoughContactPoints(info: SeedNodesInformation): Boolean
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 andinfo.seedNodesObservations.size
is the number that has been confirmed that they are reachable and running.- Attributes
- protected
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
hostMatches(host: String, target: ResolvedTarget): Boolean
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.
- Attributes
- protected
- Definition Classes
- SelfAwareJoinDecider
-
def
isConfirmedCommunicationWithAllContactPointsRequired(info: SeedNodesInformation): Boolean
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
andisPastStableMargin
must still be fulfilled.- Attributes
- protected
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isPastStableMargin(info: SeedNodesInformation): Boolean
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.- Attributes
- protected
-
def
joinOtherSeedNodes(info: SeedNodesInformation): Set[Address]
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 returnedSet
is empty it will continue probing.- Attributes
- protected
-
val
log: MarkerLoggingAdapter
- Attributes
- protected
- Definition Classes
- SelfAwareJoinDecider
-
def
lowestAddressContactPoint(info: SeedNodesInformation): Option[ResolvedTarget]
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.
- Attributes
- protected
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )