Class Reachability
- java.lang.Object
-
- akka.cluster.Reachability
-
- All Implemented Interfaces:
java.io.Serializable
public class Reachability extends java.lang.Object implements java.io.Serializable
INTERNAL APIImmutable data structure that holds the reachability status of subject nodes as seen from observer nodes. Failure detector for the subject nodes exist on the observer nodes. Changes (reachable, unreachable, terminated) are only performed by observer nodes to its own records. Each change bumps the version number of the record, and thereby it is always possible to determine which record is newest when merging two instances.
By default, each observer treats every other node as reachable. That allows to introduce the invariant that if an observer sees all nodes as reachable, no records should be kept at all. Therefore, in a running cluster with full reachability, no records need to be kept at all.
Aggregated status of a subject node is defined as (in this order): - Terminated if any observer node considers it as Terminated - Unreachable if any observer node considers it as Unreachable - Reachable otherwise, i.e. no observer node considers it as Unreachable
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
Reachability.ReachabilityStatus
static class
Reachability.Reachable$
static class
Reachability.Record
static class
Reachability.Record$
static class
Reachability.Terminated$
static class
Reachability.Unreachable$
-
Constructor Summary
Constructors Constructor Description Reachability()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description scala.collection.immutable.Set<UniqueAddress>
allObservers()
scala.collection.immutable.Set<UniqueAddress>
allUnreachable()
scala.collection.immutable.Set<UniqueAddress>
allUnreachableFrom(UniqueAddress observer)
scala.collection.immutable.Set<UniqueAddress>
allUnreachableOrTerminated()
static Reachability
apply(scala.collection.immutable.IndexedSeq<Reachability.Record> records, scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions)
static Reachability
create(scala.collection.immutable.Seq<Reachability.Record> records, scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions)
static Reachability
empty()
boolean
equals(java.lang.Object obj)
Reachability
filterRecords(scala.Function1<Reachability.Record,java.lang.Object> f)
int
hashCode()
boolean
isAllReachable()
boolean
isReachable(UniqueAddress node)
boolean
isReachable(UniqueAddress observer, UniqueAddress subject)
Reachability
merge(scala.collection.immutable.Set<UniqueAddress> allowed, Reachability other)
scala.collection.immutable.Map<UniqueAddress,scala.collection.immutable.Set<UniqueAddress>>
observersGroupedByUnreachable()
Reachability
reachable(UniqueAddress observer, UniqueAddress subject)
scala.collection.immutable.IndexedSeq<Reachability.Record>
records()
scala.collection.immutable.IndexedSeq<Reachability.Record>
recordsFrom(UniqueAddress observer)
Reachability
remove(scala.collection.Iterable<UniqueAddress> nodes)
Reachability
removeObservers(scala.collection.immutable.Set<UniqueAddress> nodes)
Reachability.ReachabilityStatus
status(UniqueAddress node)
Reachability.ReachabilityStatus
status(UniqueAddress observer, UniqueAddress subject)
Reachability
terminated(UniqueAddress observer, UniqueAddress subject)
java.lang.String
toString()
Reachability
unreachable(UniqueAddress observer, UniqueAddress subject)
scala.collection.immutable.Map<UniqueAddress,java.lang.Object>
versions()
-
-
-
Method Detail
-
empty
public static Reachability empty()
-
apply
public static Reachability apply(scala.collection.immutable.IndexedSeq<Reachability.Record> records, scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions)
-
create
public static Reachability create(scala.collection.immutable.Seq<Reachability.Record> records, scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions)
-
records
public scala.collection.immutable.IndexedSeq<Reachability.Record> records()
-
versions
public scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions()
-
unreachable
public Reachability unreachable(UniqueAddress observer, UniqueAddress subject)
-
reachable
public Reachability reachable(UniqueAddress observer, UniqueAddress subject)
-
terminated
public Reachability terminated(UniqueAddress observer, UniqueAddress subject)
-
merge
public Reachability merge(scala.collection.immutable.Set<UniqueAddress> allowed, Reachability other)
-
remove
public Reachability remove(scala.collection.Iterable<UniqueAddress> nodes)
-
removeObservers
public Reachability removeObservers(scala.collection.immutable.Set<UniqueAddress> nodes)
-
filterRecords
public Reachability filterRecords(scala.Function1<Reachability.Record,java.lang.Object> f)
-
status
public Reachability.ReachabilityStatus status(UniqueAddress observer, UniqueAddress subject)
-
status
public Reachability.ReachabilityStatus status(UniqueAddress node)
-
isReachable
public boolean isReachable(UniqueAddress node)
- Returns:
- true if the given node is seen as Reachable, i.e. there's no negative (Unreachable, Terminated) observation record known for that the node.
-
isReachable
public boolean isReachable(UniqueAddress observer, UniqueAddress subject)
- Returns:
- true if the given observer node can reach the subject node.
-
isAllReachable
public boolean isAllReachable()
- Returns:
- true if there's no negative (Unreachable, Terminated) observation record at all for any node
-
allUnreachable
public scala.collection.immutable.Set<UniqueAddress> allUnreachable()
- Returns:
- all nodes that are Unreachable (i.e. they have been reported as Unreachable by at least one other node). This does not include nodes observed to be Terminated.
-
allUnreachableOrTerminated
public scala.collection.immutable.Set<UniqueAddress> allUnreachableOrTerminated()
- Returns:
- all nodes that are Unreachable or Terminated (i.e. they have been reported as Unreachable or Terminated by at least one other node).
-
allUnreachableFrom
public scala.collection.immutable.Set<UniqueAddress> allUnreachableFrom(UniqueAddress observer)
- Returns:
- all nodes that have been observed as Unreachable by the given observer. This doesn't include nodes observed as Terminated.
-
observersGroupedByUnreachable
public scala.collection.immutable.Map<UniqueAddress,scala.collection.immutable.Set<UniqueAddress>> observersGroupedByUnreachable()
-
allObservers
public scala.collection.immutable.Set<UniqueAddress> allObservers()
-
recordsFrom
public scala.collection.immutable.IndexedSeq<Reachability.Record> recordsFrom(UniqueAddress observer)
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-