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 SummaryNested 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 SummaryConstructors Constructor Description VersionVector()
 - 
Method SummaryAll 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.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface akka.cluster.ddata.RemovedNodePruningmodifiedByNodes
 - 
Methods inherited from interface akka.cluster.ddata.ReplicatedDatamerge
 
- 
 
- 
- 
- 
Method Detail- 
emptypublic static VersionVector empty() 
 - 
applypublic static VersionVector apply() 
 - 
applypublic static VersionVector apply(scala.collection.immutable.TreeMap<UniqueAddress,java.lang.Object> versions) 
 - 
applypublic static VersionVector apply(UniqueAddress node, long version) 
 - 
createpublic static VersionVector create() Java API
 - 
AfterInstancepublic static VersionVector.After$ AfterInstance() Java API: TheVersionVector.Afterinstance
 - 
BeforeInstancepublic static VersionVector.Before$ BeforeInstance() Java API: TheVersionVector.Beforeinstance
 - 
SameInstancepublic static VersionVector.Same$ SameInstance() Java API: TheVersionVector.Sameinstance
 - 
ConcurrentInstancepublic static VersionVector.Concurrent$ ConcurrentInstance() Java API: TheVersionVector.Concurrentinstance
 - 
$colon$pluspublic VersionVector $colon$plus(SelfUniqueAddress node) Increment the version for the node passed as argument. Returns a new VersionVector.
 - 
incrementpublic VersionVector increment(SelfUniqueAddress node) Increment the version for the node passed as argument. Returns a new VersionVector.
 - 
isEmptypublic abstract boolean isEmpty() 
 - 
$less$greaterpublic boolean $less$greater(VersionVector that) Returns true ifthisandthatare concurrent else false.
 - 
$lesspublic boolean $less(VersionVector that) Returns true ifthisis beforethatelse false.
 - 
$greaterpublic boolean $greater(VersionVector that) Returns true ifthisis afterthatelse false.
 - 
$eq$eqpublic boolean $eq$eq(VersionVector that) Returns true if this VersionVector has the same history as the 'that' VersionVector else false.
 - 
compareTopublic 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.
 - 
mergepublic abstract VersionVector merge(VersionVector that) Merges this VersionVector with another VersionVector. E.g. merges its versioned history.
 - 
needPruningFrompublic 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 interface- RemovedNodePruning
 
 - 
prunepublic 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 interface- RemovedNodePruning
 
 - 
pruningCleanuppublic 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 interface- RemovedNodePruning
 
 
- 
 
-