Package akka.cluster.ddata
Class VersionVector
- java.lang.Object
-
- akka.cluster.ddata.VersionVector
-
- All Implemented Interfaces:
RemovedNodePruning,ReplicatedData,ReplicatedDataSerialization,java.io.Serializable
- Direct Known Subclasses:
ManyVersionVector,OneVersionVector
public abstract class VersionVector extends java.lang.Object implements ReplicatedData, ReplicatedDataSerialization, RemovedNodePruning
Representation of a Vector-based clock (counting clock), inspired by Lamport logical clocks.Reference: 1) Leslie Lamport (1978). "Time, clocks, and the ordering of events in a distributed system". Communications of the ACM 21 (7): 558-565. 2) Friedemann Mattern (1988). "Virtual Time and Global States of Distributed Systems". Workshop on Parallel and Distributed Algorithms: pp. 215-226Based on code from
akka.cluster.VectorClock.This class is immutable, i.e. "modifying" methods return a new instance.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classVersionVector.After$static classVersionVector.Before$static classVersionVector.Concurrent$static interfaceVersionVector.Orderingstatic classVersionVector.Same$static classVersionVector.Timestamp$INTERNAL API
-
Constructor Summary
Constructors Constructor Description VersionVector()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description VersionVector$colon$plus(SelfUniqueAddress node)Increment the version for the node passed as argument.boolean$eq$eq(VersionVector that)Returns true if this VersionVector has the same history as the 'that' VersionVector else false.boolean$greater(VersionVector that)Returns true ifthisis afterthatelse false.boolean$less(VersionVector that)Returns true ifthisis beforethatelse false.boolean$less$greater(VersionVector that)Returns true ifthisandthatare concurrent else false.static VersionVector.After$AfterInstance()Java API: TheVersionVector.Afterinstancestatic VersionVectorapply()static VersionVectorapply(UniqueAddress node, long version)static VersionVectorapply(scala.collection.immutable.TreeMap<UniqueAddress,java.lang.Object> versions)static VersionVector.Before$BeforeInstance()Java API: TheVersionVector.BeforeinstanceVersionVector.OrderingcompareTo(VersionVector that)Compare two version vectors.static VersionVector.Concurrent$ConcurrentInstance()Java API: TheVersionVector.Concurrentinstancestatic VersionVectorcreate()Java APIstatic VersionVectorempty()VersionVectorincrement(SelfUniqueAddress node)Increment the version for the node passed as argument.abstract booleanisEmpty()abstract VersionVectormerge(VersionVector that)Merges this VersionVector with another VersionVector.abstract booleanneedPruningFrom(UniqueAddress removedNode)Does it have any state changes from a specific node, which has been removed from the cluster.abstract VersionVectorprune(UniqueAddress removedNode, UniqueAddress collapseInto)When theremovednode has been removed from the cluster the state changes from that node will be pruned by collapsing the data entries to another node.abstract VersionVectorpruningCleanup(UniqueAddress removedNode)Remove data entries from a node that has been removed from the cluster and already been pruned.static VersionVector.Same$SameInstance()Java API: TheVersionVector.Sameinstance-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface akka.cluster.ddata.RemovedNodePruning
modifiedByNodes
-
Methods inherited from interface akka.cluster.ddata.ReplicatedData
merge
-
-
-
-
Method Detail
-
empty
public static VersionVector empty()
-
apply
public static VersionVector apply()
-
apply
public static VersionVector apply(scala.collection.immutable.TreeMap<UniqueAddress,java.lang.Object> versions)
-
apply
public static VersionVector apply(UniqueAddress node, long version)
-
create
public static VersionVector create()
Java API
-
AfterInstance
public static VersionVector.After$ AfterInstance()
Java API: TheVersionVector.Afterinstance
-
BeforeInstance
public static VersionVector.Before$ BeforeInstance()
Java API: TheVersionVector.Beforeinstance
-
SameInstance
public static VersionVector.Same$ SameInstance()
Java API: TheVersionVector.Sameinstance
-
ConcurrentInstance
public static VersionVector.Concurrent$ ConcurrentInstance()
Java API: TheVersionVector.Concurrentinstance
-
$colon$plus
public VersionVector $colon$plus(SelfUniqueAddress node)
Increment the version for the node passed as argument. Returns a new VersionVector.
-
increment
public VersionVector increment(SelfUniqueAddress node)
Increment the version for the node passed as argument. Returns a new VersionVector.
-
isEmpty
public abstract boolean isEmpty()
-
$less$greater
public boolean $less$greater(VersionVector that)
Returns true ifthisandthatare concurrent else false.
-
$less
public boolean $less(VersionVector that)
Returns true ifthisis beforethatelse false.
-
$greater
public boolean $greater(VersionVector that)
Returns true ifthisis afterthatelse false.
-
$eq$eq
public boolean $eq$eq(VersionVector that)
Returns true if this VersionVector has the same history as the 'that' VersionVector else false.
-
compareTo
public VersionVector.Ordering compareTo(VersionVector that)
Compare two version vectors. The outcome will be one of the following:1. Version 1 is SAME (==) as Version 2 iff for all i c1(i) == c2(i) 2. Version 1 is BEFORE (<) Version 2 iff for all i c1(i) <= c2(i) and there exist a j such that c1(j) < c2(j) 3. Version 1 is AFTER (>) Version 2 iff for all i c1(i) >= c2(i) and there exist a j such that c1(j) > c2(j). 4. Version 1 is CONCURRENT (<>) to Version 2 otherwise.
-
merge
public abstract VersionVector merge(VersionVector that)
Merges this VersionVector with another VersionVector. E.g. merges its versioned history.
-
needPruningFrom
public abstract boolean needPruningFrom(UniqueAddress removedNode)
Description copied from interface:RemovedNodePruningDoes it have any state changes from a specific node, which has been removed from the cluster.- Specified by:
needPruningFromin interfaceRemovedNodePruning
-
prune
public abstract VersionVector prune(UniqueAddress removedNode, UniqueAddress collapseInto)
Description copied from interface:RemovedNodePruningWhen theremovednode has been removed from the cluster the state changes from that node will be pruned by collapsing the data entries to another node.- Specified by:
prunein interfaceRemovedNodePruning
-
pruningCleanup
public abstract VersionVector pruningCleanup(UniqueAddress removedNode)
Description copied from interface:RemovedNodePruningRemove data entries from a node that has been removed from the cluster and already been pruned.- Specified by:
pruningCleanupin interfaceRemovedNodePruning
-
-