Class Replicator
- java.lang.Object
- 
- org.apache.pekko.cluster.ddata.Replicator
 
- 
- All Implemented Interfaces:
- Actor,- ActorLogging
 
 public final class Replicator extends java.lang.Object implements Actor, ActorLogging A replicated in-memory data store supporting low latency and high availability requirements.The Replicatoractor takes care of direct replication and gossip based dissemination of Conflict Free Replicated Data Types (CRDTs) to replicas in the the cluster. The data types must be convergent CRDTs and implementReplicatedData, i.e. they provide a monotonic merge function and the state changes always converge.You can use your own custom ReplicatedDataorDeltaReplicatedDatatypes, and several types are provided by this package, such as:- Counters: GCounter,PNCounter
- Registers: LWWRegister,Flag
- Sets: GSet,ORSet
- Maps: ORMap,ORMultiMap,LWWMap,PNCounterMap
 For good introduction to the CRDT subject watch the Eventually Consistent Data Structures talk by Sean Cribbs and and the talk by Mark Shapiro and read the excellent paper A comprehensive study of Convergent and Commutative Replicated Data Types by Mark Shapiro et. al. The Replicatoractor must be started on each node in the cluster, or group of nodes tagged with a specific role. It communicates with otherReplicatorinstances with the same path (without address) that are running on other nodes . For convenience it can be used with theDistributedDataextension but it can also be started as an ordinary actor using theReplicator.props. If it is started as an ordinary actor it is important that it is given the same name, started on same path, on all nodes.Delta State Replicated Data Types are supported. delta-CRDT is a way to reduce the need for sending the full state for updates. For example adding element 'c' and 'd' to set {'a', 'b'} would result in sending the delta {'c', 'd'} and merge that with the state on the receiving side, resulting in set {'a', 'b', 'c', 'd'}. The protocol for replicating the deltas supports causal consistency if the data type is marked with RequiresCausalDeliveryOfDeltas. Otherwise it is only eventually consistent. Without causal consistency it means that if elements 'c' and 'd' are added in two separateUpdateoperations these deltas may occasionally be propagated to nodes in different order than the causal order of the updates. For this example it can result in that set {'a', 'b', 'd'} can be seen before element 'c' is seen. Eventually it will be {'a', 'b', 'c', 'd'}.== Update == To modify and replicate a ReplicatedDatavalue you send aReplicator.Updatemessage to the localReplicator. The current data value for thekeyof theUpdateis passed as parameter to themodifyfunction of theUpdate. The function is supposed to return the new value of the data, which will then be replicated according to the given consistency level.The modifyfunction is called by theReplicatoractor and must therefore be a pure function that only uses the data parameter and stable fields from enclosing scope. It must for example not accesssender()reference of an enclosing actor.Updateis intended to only be sent from an actor running in same localActorSystemas theReplicator, because themodifyfunction is typically not serializable.You supply a write consistency level which has the following meaning: - WriteLocalthe value will immediately only be written to the local replica, and later disseminated with gossip
- WriteTo(n)the value will immediately be written to at least- nreplicas, including the local replica
- WriteMajoritythe value will immediately be written to a majority of replicas, i.e. at least- N/2 + 1replicas, where N is the number of nodes in the cluster (or cluster role group)
- WriteAllthe value will immediately be written to all nodes in the cluster (or all nodes in the cluster role group)
 As reply of the UpdateaReplicator.UpdateSuccessis sent to the sender of theUpdateif the value was successfully replicated according to the supplied consistency level within the supplied timeout. Otherwise aReplicator.UpdateFailuresubclass is sent back. Note that aReplicator.UpdateTimeoutreply does not mean that the update completely failed or was rolled back. It may still have been replicated to some nodes, and will eventually be replicated to all nodes with the gossip protocol.You will always see your own writes. For example if you send two Updatemessages changing the value of the samekey, themodifyfunction of the second message will see the change that was performed by the firstUpdatemessage.In the Updatemessage you can pass an optional request context, which theReplicatordoes not care about, but is included in the reply messages. This is a convenient way to pass contextual information (e.g. original sender) without having to useaskor local correlation data structures.== Get == To retrieve the current value of a data you send Replicator.Getmessage to theReplicator. You supply a consistency level which has the following meaning:- ReadLocalthe value will only be read from the local replica
- ReadFrom(n)the value will be read and merged from- nreplicas, including the local replica
- ReadMajoritythe value will be read and merged from a majority of replicas, i.e. at least- N/2 + 1replicas, where N is the number of nodes in the cluster (or cluster role group)
- ReadAllthe value will be read and merged from all nodes in the cluster (or all nodes in the cluster role group)
 As reply of the GetaReplicator.GetSuccessis sent to the sender of theGetif the value was successfully retrieved according to the supplied consistency level within the supplied timeout. Otherwise aReplicator.GetFailureis sent. If the key does not exist the reply will beReplicator.NotFound.You will always read your own writes. For example if you send a Updatemessage followed by aGetof the samekeytheGetwill retrieve the change that was performed by the precedingUpdatemessage. However, the order of the reply messages are not defined, i.e. in the previous example you may receive theGetSuccessbefore theUpdateSuccess.In the Getmessage you can pass an optional request context in the same way as for theUpdatemessage, described above. For example the original sender can be passed and replied to after receiving and transformingGetSuccess.== Subscribe == You may also register interest in change notifications by sending Replicator.Subscribemessage to theReplicator. It will sendReplicator.Changedmessages to the registered subscriber when the data for the subscribed key is updated. Subscribers will be notified periodically with the configurednotify-subscribers-interval, and it is also possible to send an explicitReplicator.FlushChangesmessage to theReplicatorto notify the subscribers immediately.The subscriber is automatically removed if the subscriber is terminated. A subscriber can also be deregistered with the Replicator.Unsubscribemessage.== Delete == A data entry can be deleted by sending a Replicator.Deletemessage to the local localReplicator. As reply of theDeleteaReplicator.DeleteSuccessis sent to the sender of theDeleteif the value was successfully deleted according to the supplied consistency level within the supplied timeout. Otherwise aReplicator.ReplicationDeleteFailureis sent. Note thatReplicationDeleteFailuredoes not mean that the delete completely failed or was rolled back. It may still have been replicated to some nodes, and may eventually be replicated to all nodes.A deleted key cannot be reused again, but it is still recommended to delete unused data entries because that reduces the replication overhead when new nodes join the cluster. Subsequent Delete,UpdateandGetrequests will be replied withReplicator.DataDeleted,Replicator.UpdateDataDeletedandReplicator.GetDataDeletedrespectively. Subscribers will receiveReplicator.Deleted.In the Deletemessage you can pass an optional request context in the same way as for theUpdatemessage, described above. For example the original sender can be passed and replied to after receiving and transformingDeleteSuccess.== CRDT Garbage == One thing that can be problematic with CRDTs is that some data types accumulate history (garbage). For example a GCounterkeeps track of one counter per node. If aGCounterhas been updated from one node it will associate the identifier of that node forever. That can become a problem for long running systems with many cluster nodes being added and removed. To solve this problem theReplicatorperforms pruning of data associated with nodes that have been removed from the cluster. Data types that need pruning have to implementRemovedNodePruning. The pruning consists of several steps:- When a node is removed from the cluster it is first important that all updates that were
 done by that node are disseminated to all other nodes. The pruning will not start before the
 maxPruningDisseminationduration has elapsed. The time measurement is stopped when any replica is unreachable, but it's still recommended to configure this with certain margin. It should be in the magnitude of minutes.
- The nodes are ordered by their address and the node ordered first is called leader.
 The leader initiates the pruning by adding a PruningInitializedmarker in the data envelope. This is gossiped to all other nodes and they mark it as seen when they receive it.
- When the leader sees that all other nodes have seen the PruningInitializedmarker the leader performs the pruning and changes the marker toPruningPerformedso that nobody else will redo the pruning. The data envelope with this pruning state is a CRDT itself. The pruning is typically performed by "moving" the part of the data associated with the removed node to the leader node. For example, aGCounteris aMapwith the node as key and the counts done by that node as value. When pruning the value of the removed node is moved to the entry owned by the leader node. SeeRemovedNodePruning.prune(org.apache.pekko.cluster.UniqueAddress, org.apache.pekko.cluster.UniqueAddress).
- Thereafter the data is always cleared from parts associated with the removed node so that
 it does not come back when merging. See RemovedNodePruning.pruningCleanup(org.apache.pekko.cluster.UniqueAddress)
- After another maxPruningDisseminationduration after pruning the last entry from the removed node thePruningPerformedmarkers in the data envelope are collapsed into a single tombstone entry, for efficiency. Clients may continue to use old data and therefore all data are always cleared from parts associated with tombstoned nodes.
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static classReplicator.Changed<A extends ReplicatedData>The data value is retrieved withReplicator.Changed.get(org.apache.pekko.cluster.ddata.Key<T>)using the typed key.static classReplicator.Changed$static interfaceReplicator.Command<A extends ReplicatedData>static classReplicator.DataDeleted<A extends ReplicatedData>static classReplicator.DataDeleted$static classReplicator.Delete<A extends ReplicatedData>Send this message to the localReplicatorto delete a data value for the givenkey.static classReplicator.Delete$static classReplicator.Deleted<A extends ReplicatedData>static classReplicator.Deleted$static interfaceReplicator.DeleteResponse<A extends ReplicatedData>static classReplicator.DeleteSuccess<A extends ReplicatedData>static classReplicator.DeleteSuccess$static classReplicator.FlushChanges$Notify subscribers of changes now, otherwise they will be notified periodically with the configurednotify-subscribers-interval.static classReplicator.Get<A extends ReplicatedData>Send this message to the localReplicatorto retrieve a data value for the givenkey.static classReplicator.Get$static classReplicator.GetDataDeleted<A extends ReplicatedData>TheReplicator.Getrequest couldn't be performed because the entry has been deleted.static classReplicator.GetDataDeleted$static classReplicator.GetFailure<A extends ReplicatedData>TheReplicator.Getrequest could not be fulfill according to the givenconsistency levelandtimeout.static classReplicator.GetFailure$static classReplicator.GetKeyIds$INTERNAL APIstatic classReplicator.GetKeyIdsResult$static classReplicator.GetReplicaCount$Get current number of replicas, including the local replica.static classReplicator.GetResponse<A extends ReplicatedData>static classReplicator.GetSuccess<A extends ReplicatedData>Reply fromGet.static classReplicator.GetSuccess$static classReplicator.Internal$INTERNAL APIstatic classReplicator.ModifyFailure<A extends ReplicatedData>If themodifyfunction of theReplicator.Updatethrows an exception the reply message will be thisModifyFailuremessage.static classReplicator.ModifyFailure$static classReplicator.NotFound<A extends ReplicatedData>static classReplicator.NotFound$static classReplicator.ReadAllstatic classReplicator.ReadAll$static interfaceReplicator.ReadConsistencystatic classReplicator.ReadFromstatic classReplicator.ReadFrom$static classReplicator.ReadLocal$static classReplicator.ReadMajoritystatic classReplicator.ReadMajority$static classReplicator.ReadMajorityPlusReadMajoritybut with the given number ofadditionalnodes added to the majority count.static classReplicator.ReadMajorityPlus$static classReplicator.ReplicaCountCurrent number of replicas.static classReplicator.ReplicaCount$static classReplicator.ReplicationDeleteFailure<A extends ReplicatedData>static classReplicator.ReplicationDeleteFailure$static interfaceReplicator.ReplicatorMessageMarker trait for remote messages serialized bypekko.cluster.ddata.protobuf.ReplicatorMessageSerializer.static classReplicator.StoreFailure<A extends ReplicatedData>The local store or direct replication of theReplicator.Updatecould not be fulfill according to the givenconsistency leveldue to durable store errors.static classReplicator.StoreFailure$static classReplicator.Subscribe<A extends ReplicatedData>Register a subscriber that will be notified with aReplicator.Changedmessage when the value of the givenkeyis changed.static classReplicator.Subscribe$static interfaceReplicator.SubscribeResponse<A extends ReplicatedData>static classReplicator.Unsubscribe<A extends ReplicatedData>Unregister a subscriber.static classReplicator.Unsubscribe$static classReplicator.Update<A extends ReplicatedData>static classReplicator.Update$static classReplicator.UpdateDataDeleted<A extends ReplicatedData>TheReplicator.Updatecouldn't be performed because the entry has been deleted.static classReplicator.UpdateDataDeleted$static classReplicator.UpdateFailure<A extends ReplicatedData>static classReplicator.UpdateResponse<A extends ReplicatedData>static classReplicator.UpdateSuccess<A extends ReplicatedData>static classReplicator.UpdateSuccess$static classReplicator.UpdateTimeout<A extends ReplicatedData>The direct replication of theReplicator.Updatecould not be fulfill according to the givenconsistency levelandtimeout.static classReplicator.UpdateTimeout$static classReplicator.WriteAllstatic classReplicator.WriteAll$static interfaceReplicator.WriteConsistencystatic classReplicator.WriteLocal$static classReplicator.WriteMajoritystatic classReplicator.WriteMajority$static classReplicator.WriteMajorityPlusWriteMajoritybut with the given number ofadditionalnodes added to the majority count.static classReplicator.WriteMajorityPlus$static classReplicator.WriteTostatic classReplicator.WriteTo$- 
Nested classes/interfaces inherited from interface org.apache.pekko.actor.ActorActor.emptyBehavior$, Actor.ignoringBehavior$
 
- 
 - 
Constructor SummaryConstructors Constructor Description Replicator(ReplicatorSettings settings)
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description longallReachableClockTime()voidallReachableClockTime_$eq(long x$1)protected voidaroundReceive(scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> rcv, java.lang.Object msg)INTERNAL API.scala.collection.immutable.Set<java.lang.String>changed()voidchanged_$eq(scala.collection.immutable.Set<java.lang.String> x$1)CancellableclockTask()Clustercluster()voidcollectRemovedNodes()ActorContextcontext()Scala API: Stores the context for this actor, including self, and sender.scala.collection.immutable.Map<java.lang.String,scala.Tuple2<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope,ByteString>>dataEntries()voiddataEntries_$eq(scala.collection.immutable.Map<java.lang.String,scala.Tuple2<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope,ByteString>> x$1)static intDefaultMajorityMinCap()voiddeleteObsoletePruningPerformed()java.lang.ObjectdeltaPropagationSelector()scala.Option<Cancellable>deltaPropagationTask()scala.Tuple2<ByteString,java.lang.Object>digest(org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope envelope)scala.collection.immutable.Set<java.lang.String>durable()ActorRefdurableStore()scala.collection.immutable.Set<java.lang.String>durableWildcards()scala.collection.immutable.SortedSet<UniqueAddress>exitingNodes()voidexitingNodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1)static Replicator.FlushChanges$flushChanges()Java API: TheFlushChangesinstancebooleanfullStateGossipEnabled()voidfullStateGossipEnabled_$eq(boolean x$1)scala.Option<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope>getData(java.lang.String key)longgetDeltaSeqNr(java.lang.String key, UniqueAddress fromNode)ByteStringgetDigest(java.lang.String key)static Replicator.GetReplicaCount$getReplicaCount()Java API: TheGetReplicaCountinstanceCancellablegossipTask()voidgossipTo(UniqueAddress address)booleanhasDurableKeys()booleanhasSubscriber(ActorRef subscriber)voidinitRemovedNodePruning()booleanisDurable(java.lang.String key)booleanisLeader()booleanisLocalGet(Replicator.ReadConsistency readConsistency)booleanisLocalSender()booleanisLocalUpdate(Replicator.WriteConsistency writeConsistency)booleanisNodeRemoved(UniqueAddress node, scala.collection.Iterable<java.lang.String> keys)scala.collection.immutable.SortedSet<UniqueAddress>joiningNodes()voidjoiningNodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1)scala.collection.immutable.TreeSet<Member>leader()voidleader_$eq(scala.collection.immutable.TreeSet<Member> x$1)scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit>load()booleanmatchingRole(Member m)longmaxPruningDisseminationNanos()scala.collection.immutable.SortedSet<Member>membersByAge()voidmembersByAge_$eq(scala.collection.immutable.SortedSet<Member> x$1)scala.collection.mutable.HashMap<java.lang.String,scala.collection.mutable.Set<ActorRef>>newSubscribers()scala.collection.immutable.SortedSet<UniqueAddress>nodes()voidnodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1)scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit>normalReceive()CancellablenotifyTask()protected voidorg$apache$pekko$actor$Actor$_setter_$context_$eq(ActorContext x$1)Scala API: Stores the context for this actor, including self, and sender.protected voidorg$apache$pekko$actor$Actor$_setter_$self_$eq(ActorRef x$1)The 'self' field holds the ActorRef for this actor.voidperformRemovedNodePruning()voidpostStop()User overridable callback.voidpreStart()User overridable callback.longpreviousClockTime()voidpreviousClockTime_$eq(long x$1)static Propsprops(ReplicatorSettings settings)Factory method for thepekko.actor.Propsof theReplicatoractor.scala.Option<Cancellable>pruningTask()static Replicator.ReadLocal$readLocal()Java API: TheReadLocalinstancescala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit>receive()Scala API: This defines the initial actor behavior, it must return a partial function with the actor logic.voidreceiveClockTick()voidreceiveDelete(Key<ReplicatedData> key, Replicator.WriteConsistency consistency, scala.Option<java.lang.Object> req)voidreceiveDeltaPropagation(UniqueAddress fromNode, boolean reply, scala.collection.immutable.Map<java.lang.String,org.apache.pekko.cluster.ddata.Replicator.Internal.Delta> deltas)voidreceiveDeltaPropagationTick()voidreceiveFlushChanges()voidreceiveGet(Key<ReplicatedData> key, Replicator.ReadConsistency consistency, scala.Option<java.lang.Object> req)voidreceiveGetKeyIds()voidreceiveGetReplicaCount()voidreceiveGossip(scala.collection.immutable.Map<java.lang.String,org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope> updatedData, boolean sendBack, scala.Option<java.lang.Object> fromSystemUid)voidreceiveGossipTick()voidreceiveMemberExiting(Member m)voidreceiveMemberJoining(Member m)voidreceiveMemberRemoved(Member m)voidreceiveMemberUp(Member m)voidreceiveMemberWeaklyUp(Member m)voidreceiveOtherMemberEvent(Member m)voidreceiveReachable(Member m)voidreceiveRead(java.lang.String key)voidreceiveReadRepair(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope writeEnvelope)voidreceiveRemovedNodePruningTick()voidreceiveStatus(scala.collection.immutable.Map<java.lang.String,ByteString> otherDigests, int chunk, int totChunks, scala.Option<java.lang.Object> fromSystemUid)voidreceiveSubscribe(Key<ReplicatedData> key, ActorRef subscriber)voidreceiveTerminated(ActorRef ref)voidreceiveUnreachable(Member m)voidreceiveUnsubscribe(Key<ReplicatedData> key, ActorRef subscriber)<A extends ReplicatedData>
 voidreceiveUpdate(Key<ReplicatedData> key, scala.Function1<scala.Option<A>,A> modify, Replicator.WriteConsistency writeConsistency, scala.Option<java.lang.Object> req)voidreceiveWrite(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope envelope)scala.collection.immutable.Map<UniqueAddress,java.lang.Object>removedNodes()voidremovedNodes_$eq(scala.collection.immutable.Map<UniqueAddress,java.lang.Object> x$1)ActorSelectionreplica(UniqueAddress node)ActorRefreplyTo()voidreplyTo_$eq(ActorRef x$1)scala.Option<UniqueAddress>selectRandomNode(scala.collection.immutable.IndexedSeq<UniqueAddress> addresses)ActorRefself()The 'self' field holds the ActorRef for this actor.AddressselfAddress()scala.Some<java.lang.Object>selfFromSystemUid()UniqueAddressselfUniqueAddress()Serializerserializer()org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelopesetData(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope envelope)longstatusCount()voidstatusCount_$eq(long x$1)intstatusTotChunks()voidstatusTotChunks_$eq(int x$1)scala.collection.mutable.HashMap<java.lang.String,scala.collection.mutable.Set<ActorRef>>subscribers()scala.collection.immutable.Map<java.lang.String,Key<ReplicatedData>>subscriptionKeys()voidsubscriptionKeys_$eq(scala.collection.immutable.Map<java.lang.String,Key<ReplicatedData>> x$1)OneForOneStrategysupervisorStrategy()User overridable definition the strategy to use for supervising child actors.scala.collection.immutable.Set<UniqueAddress>unreachable()voidunreachable_$eq(scala.collection.immutable.Set<UniqueAddress> x$1)scala.collection.immutable.SortedSet<UniqueAddress>weaklyUpNodes()voidweaklyUpNodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1)scala.Option<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope>write(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope writeEnvelope)voidwriteAndStore(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope writeEnvelope, boolean reply)static Replicator.WriteLocal$writeLocal()Java API: TheWriteLocalinstance- 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.apache.pekko.actor.ActoraroundPostRestart, aroundPostStop, aroundPreRestart, aroundPreStart, postRestart, preRestart, sender, unhandled
 - 
Methods inherited from interface org.apache.pekko.actor.ActorLogging_log_$eq, log
 
- 
 
- 
- 
- 
Constructor Detail- 
Replicatorpublic Replicator(ReplicatorSettings settings) 
 
- 
 - 
Method Detail- 
propspublic static Props props(ReplicatorSettings settings) Factory method for thepekko.actor.Propsof theReplicatoractor.
 - 
DefaultMajorityMinCappublic static int DefaultMajorityMinCap() 
 - 
readLocalpublic static Replicator.ReadLocal$ readLocal() Java API: TheReadLocalinstance
 - 
writeLocalpublic static Replicator.WriteLocal$ writeLocal() Java API: TheWriteLocalinstance
 - 
getReplicaCountpublic static Replicator.GetReplicaCount$ getReplicaCount() Java API: TheGetReplicaCountinstance
 - 
flushChangespublic static Replicator.FlushChanges$ flushChanges() Java API: TheFlushChangesinstance
 - 
contextpublic ActorContext context() Description copied from interface:ActorScala API: Stores the context for this actor, including self, and sender. It is implicit to support operations such asforward.WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads! pekko.actor.ActorContextis the Scala API.getContextreturns apekko.actor.AbstractActor.ActorContext, which is the Java API of the actor context.
 - 
selfpublic final ActorRef self() Description copied from interface:ActorThe 'self' field holds the ActorRef for this actor. Can be used to send messages to itself:self ! message 
 - 
org$apache$pekko$actor$Actor$_setter_$context_$eqprotected void org$apache$pekko$actor$Actor$_setter_$context_$eq(ActorContext x$1) Description copied from interface:ActorScala API: Stores the context for this actor, including self, and sender. It is implicit to support operations such asforward.WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads! pekko.actor.ActorContextis the Scala API.getContextreturns apekko.actor.AbstractActor.ActorContext, which is the Java API of the actor context.- Specified by:
- org$apache$pekko$actor$Actor$_setter_$context_$eqin interface- Actor
 
 - 
org$apache$pekko$actor$Actor$_setter_$self_$eqprotected final void org$apache$pekko$actor$Actor$_setter_$self_$eq(ActorRef x$1) Description copied from interface:ActorThe 'self' field holds the ActorRef for this actor. Can be used to send messages to itself:self ! message - Specified by:
- org$apache$pekko$actor$Actor$_setter_$self_$eqin interface- Actor
 
 - 
clusterpublic Cluster cluster() 
 - 
selfAddresspublic Address selfAddress() 
 - 
selfUniqueAddresspublic UniqueAddress selfUniqueAddress() 
 - 
selfFromSystemUidpublic scala.Some<java.lang.Object> selfFromSystemUid() 
 - 
gossipTaskpublic Cancellable gossipTask() 
 - 
notifyTaskpublic Cancellable notifyTask() 
 - 
pruningTaskpublic scala.Option<Cancellable> pruningTask() 
 - 
clockTaskpublic Cancellable clockTask() 
 - 
serializerpublic Serializer serializer() 
 - 
maxPruningDisseminationNanospublic long maxPruningDisseminationNanos() 
 - 
hasDurableKeyspublic boolean hasDurableKeys() 
 - 
durablepublic scala.collection.immutable.Set<java.lang.String> durable() 
 - 
durableWildcardspublic scala.collection.immutable.Set<java.lang.String> durableWildcards() 
 - 
durableStorepublic ActorRef durableStore() 
 - 
deltaPropagationSelectorpublic java.lang.Object deltaPropagationSelector() 
 - 
deltaPropagationTaskpublic scala.Option<Cancellable> deltaPropagationTask() 
 - 
nodespublic scala.collection.immutable.SortedSet<UniqueAddress> nodes() 
 - 
nodes_$eqpublic void nodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1) 
 - 
membersByAgepublic scala.collection.immutable.SortedSet<Member> membersByAge() 
 - 
membersByAge_$eqpublic void membersByAge_$eq(scala.collection.immutable.SortedSet<Member> x$1) 
 - 
weaklyUpNodespublic scala.collection.immutable.SortedSet<UniqueAddress> weaklyUpNodes() 
 - 
weaklyUpNodes_$eqpublic void weaklyUpNodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1) 
 - 
joiningNodespublic scala.collection.immutable.SortedSet<UniqueAddress> joiningNodes() 
 - 
joiningNodes_$eqpublic void joiningNodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1) 
 - 
exitingNodespublic scala.collection.immutable.SortedSet<UniqueAddress> exitingNodes() 
 - 
exitingNodes_$eqpublic void exitingNodes_$eq(scala.collection.immutable.SortedSet<UniqueAddress> x$1) 
 - 
removedNodespublic scala.collection.immutable.Map<UniqueAddress,java.lang.Object> removedNodes() 
 - 
removedNodes_$eqpublic void removedNodes_$eq(scala.collection.immutable.Map<UniqueAddress,java.lang.Object> x$1) 
 - 
leaderpublic scala.collection.immutable.TreeSet<Member> leader() 
 - 
leader_$eqpublic void leader_$eq(scala.collection.immutable.TreeSet<Member> x$1) 
 - 
isLeaderpublic boolean isLeader() 
 - 
previousClockTimepublic long previousClockTime() 
 - 
previousClockTime_$eqpublic void previousClockTime_$eq(long x$1) 
 - 
allReachableClockTimepublic long allReachableClockTime() 
 - 
allReachableClockTime_$eqpublic void allReachableClockTime_$eq(long x$1) 
 - 
unreachablepublic scala.collection.immutable.Set<UniqueAddress> unreachable() 
 - 
unreachable_$eqpublic void unreachable_$eq(scala.collection.immutable.Set<UniqueAddress> x$1) 
 - 
dataEntriespublic scala.collection.immutable.Map<java.lang.String,scala.Tuple2<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope,ByteString>> dataEntries() 
 - 
dataEntries_$eqpublic void dataEntries_$eq(scala.collection.immutable.Map<java.lang.String,scala.Tuple2<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope,ByteString>> x$1) 
 - 
changedpublic scala.collection.immutable.Set<java.lang.String> changed() 
 - 
changed_$eqpublic void changed_$eq(scala.collection.immutable.Set<java.lang.String> x$1) 
 - 
statusCountpublic long statusCount() 
 - 
statusCount_$eqpublic void statusCount_$eq(long x$1) 
 - 
statusTotChunkspublic int statusTotChunks() 
 - 
statusTotChunks_$eqpublic void statusTotChunks_$eq(int x$1) 
 - 
fullStateGossipEnabledpublic boolean fullStateGossipEnabled() 
 - 
fullStateGossipEnabled_$eqpublic void fullStateGossipEnabled_$eq(boolean x$1) 
 - 
subscriberspublic scala.collection.mutable.HashMap<java.lang.String,scala.collection.mutable.Set<ActorRef>> subscribers() 
 - 
newSubscriberspublic scala.collection.mutable.HashMap<java.lang.String,scala.collection.mutable.Set<ActorRef>> newSubscribers() 
 - 
subscriptionKeyspublic scala.collection.immutable.Map<java.lang.String,Key<ReplicatedData>> subscriptionKeys() 
 - 
subscriptionKeys_$eqpublic void subscriptionKeys_$eq(scala.collection.immutable.Map<java.lang.String,Key<ReplicatedData>> x$1) 
 - 
replyTopublic ActorRef replyTo() 
 - 
replyTo_$eqpublic void replyTo_$eq(ActorRef x$1) 
 - 
aroundReceiveprotected void aroundReceive(scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> rcv, java.lang.Object msg)Description copied from interface:ActorINTERNAL API.Can be overridden to intercept calls to this actor's current behavior. - Specified by:
- aroundReceivein interface- Actor
- Parameters:
- rcv- current behavior.
- msg- current message.
 
 - 
preStartpublic void preStart() Description copied from interface:ActorUser overridable callback. Is called when an Actor is started. Actors are automatically started asynchronously when created. Empty default implementation.
 - 
postStoppublic void postStop() Description copied from interface:ActorUser overridable callback. Is called asynchronously after 'actor.stop()' is invoked. Empty default implementation.
 - 
matchingRolepublic boolean matchingRole(Member m) 
 - 
supervisorStrategypublic OneForOneStrategy supervisorStrategy() Description copied from interface:ActorUser overridable definition the strategy to use for supervising child actors.- Specified by:
- supervisorStrategyin interface- Actor
 
 - 
receivepublic scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> receive() Description copied from interface:ActorScala API: This defines the initial actor behavior, it must return a partial function with the actor logic.
 - 
loadpublic scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> load() 
 - 
normalReceivepublic scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> normalReceive() 
 - 
receiveGetpublic void receiveGet(Key<ReplicatedData> key, Replicator.ReadConsistency consistency, scala.Option<java.lang.Object> req) 
 - 
isLocalGetpublic boolean isLocalGet(Replicator.ReadConsistency readConsistency) 
 - 
receiveReadpublic void receiveRead(java.lang.String key) 
 - 
isLocalSenderpublic boolean isLocalSender() 
 - 
receiveUpdatepublic <A extends ReplicatedData> void receiveUpdate(Key<ReplicatedData> key, scala.Function1<scala.Option<A>,A> modify, Replicator.WriteConsistency writeConsistency, scala.Option<java.lang.Object> req) 
 - 
isDurablepublic boolean isDurable(java.lang.String key) 
 - 
isLocalUpdatepublic boolean isLocalUpdate(Replicator.WriteConsistency writeConsistency) 
 - 
receiveWritepublic void receiveWrite(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope envelope)
 - 
writeAndStorepublic void writeAndStore(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope writeEnvelope, boolean reply)
 - 
writepublic scala.Option<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope> write(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope writeEnvelope)
 - 
receiveReadRepairpublic void receiveReadRepair(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope writeEnvelope)
 - 
receiveGetKeyIdspublic void receiveGetKeyIds() 
 - 
receiveDeletepublic void receiveDelete(Key<ReplicatedData> key, Replicator.WriteConsistency consistency, scala.Option<java.lang.Object> req) 
 - 
setDatapublic org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope setData(java.lang.String key, org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope envelope)
 - 
getDigestpublic ByteString getDigest(java.lang.String key) 
 - 
digestpublic scala.Tuple2<ByteString,java.lang.Object> digest(org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope envelope) - Returns:
- SHA-1 digest of the serialized data, and the size of the serialized data
 
 - 
getDatapublic scala.Option<org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope> getData(java.lang.String key) 
 - 
getDeltaSeqNrpublic long getDeltaSeqNr(java.lang.String key, UniqueAddress fromNode)
 - 
isNodeRemovedpublic boolean isNodeRemoved(UniqueAddress node, scala.collection.Iterable<java.lang.String> keys) 
 - 
receiveFlushChangespublic void receiveFlushChanges() 
 - 
receiveDeltaPropagationTickpublic void receiveDeltaPropagationTick() 
 - 
receiveDeltaPropagationpublic void receiveDeltaPropagation(UniqueAddress fromNode, boolean reply, scala.collection.immutable.Map<java.lang.String,org.apache.pekko.cluster.ddata.Replicator.Internal.Delta> deltas) 
 - 
receiveGossipTickpublic void receiveGossipTick() 
 - 
gossipTopublic void gossipTo(UniqueAddress address) 
 - 
selectRandomNodepublic scala.Option<UniqueAddress> selectRandomNode(scala.collection.immutable.IndexedSeq<UniqueAddress> addresses) 
 - 
replicapublic ActorSelection replica(UniqueAddress node) 
 - 
receiveStatuspublic void receiveStatus(scala.collection.immutable.Map<java.lang.String,ByteString> otherDigests, int chunk, int totChunks, scala.Option<java.lang.Object> fromSystemUid) 
 - 
receiveGossippublic void receiveGossip(scala.collection.immutable.Map<java.lang.String,org.apache.pekko.cluster.ddata.Replicator.Internal.DataEnvelope> updatedData, boolean sendBack, scala.Option<java.lang.Object> fromSystemUid)
 - 
receiveSubscribepublic void receiveSubscribe(Key<ReplicatedData> key, ActorRef subscriber) 
 - 
receiveUnsubscribepublic void receiveUnsubscribe(Key<ReplicatedData> key, ActorRef subscriber) 
 - 
hasSubscriberpublic boolean hasSubscriber(ActorRef subscriber) 
 - 
receiveTerminatedpublic void receiveTerminated(ActorRef ref) 
 - 
receiveMemberJoiningpublic void receiveMemberJoining(Member m) 
 - 
receiveMemberWeaklyUppublic void receiveMemberWeaklyUp(Member m) 
 - 
receiveMemberUppublic void receiveMemberUp(Member m) 
 - 
receiveMemberExitingpublic void receiveMemberExiting(Member m) 
 - 
receiveMemberRemovedpublic void receiveMemberRemoved(Member m) 
 - 
receiveOtherMemberEventpublic void receiveOtherMemberEvent(Member m) 
 - 
receiveUnreachablepublic void receiveUnreachable(Member m) 
 - 
receiveReachablepublic void receiveReachable(Member m) 
 - 
receiveClockTickpublic void receiveClockTick() 
 - 
receiveRemovedNodePruningTickpublic void receiveRemovedNodePruningTick() 
 - 
collectRemovedNodespublic void collectRemovedNodes() 
 - 
initRemovedNodePruningpublic void initRemovedNodePruning() 
 - 
performRemovedNodePruningpublic void performRemovedNodePruning() 
 - 
deleteObsoletePruningPerformedpublic void deleteObsoletePruningPerformed() 
 - 
receiveGetReplicaCountpublic void receiveGetReplicaCount() 
 
- 
 
-