Class BucketStoreActor<T extends BucketData<T>>
- java.lang.Object
-
- akka.actor.AbstractActor
-
- akka.persistence.AbstractPersistentActor
-
- org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor
-
- org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActorWithMetering
-
- org.opendaylight.controller.remote.rpc.registry.gossip.BucketStoreActor<T>
-
- All Implemented Interfaces:
Actor
,Stash
,StashFactory
,StashSupport
,UnrestrictedStash
,RequiresMessageQueue<DequeBasedMessageQueueSemantics>
,AbstractPersistentActorLike
,Eventsourced
,PersistenceIdentity
,PersistenceRecovery
,PersistenceStash
,Snapshotter
,ExecuteInSelfActor
- Direct Known Subclasses:
ActionRegistry
,RpcRegistry
public abstract class BucketStoreActor<T extends BucketData<T>> extends AbstractUntypedPersistentActorWithMetering
A store that syncs its data across nodes in the cluster. It maintains aBucket
per node. Buckets are versioned. A node can write ONLY to its bucket. This way, write conflicts are avoided.Buckets are sync'ed across nodes using Gossip protocol (http://en.wikipedia.org/wiki/Gossip_protocol). This store uses a
Gossiper
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class akka.actor.AbstractActor
AbstractActor.ActorContext, AbstractActor.Receive
-
Nested classes/interfaces inherited from interface akka.actor.Actor
Actor.emptyBehavior$, Actor.ignoringBehavior$
-
Nested classes/interfaces inherited from interface akka.persistence.Eventsourced
Eventsourced.AsyncHandlerInvocation, Eventsourced.AsyncHandlerInvocation$, Eventsourced.PendingHandlerInvocation, Eventsourced.ProcessingState, Eventsourced.RecoveryTick, Eventsourced.RecoveryTick$, Eventsourced.StashingHandlerInvocation, Eventsourced.StashingHandlerInvocation$, Eventsourced.State
-
-
Field Summary
-
Fields inherited from class org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor
LOG
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
BucketStoreActor(RemoteOpsProviderConfig config, String persistenceId, T initialData)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected RemoteOpsProviderConfig
getConfig()
T
getLocalData()
Map<Address,Bucket<T>>
getRemoteBuckets()
Map<Address,Long>
getVersions()
protected void
handleCommand(Object message)
protected void
handleRecover(Object message)
protected boolean
isPersisting()
protected abstract void
onBucketRemoved(Address address, Bucket<T> bucket)
Callback to subclasses invoked when a bucket is removed.protected abstract void
onBucketsUpdated(Map<Address,Bucket<T>> newBuckets)
Callback to subclasses invoked when the set of remote buckets is updated.String
persistenceId()
void
preStart()
protected void
updateLocalBucket(T data)
-
Methods inherited from class org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor
createReceive, createReceiveRecover, executeInSelf, ignoreMessage, unknownMessage
-
Methods inherited from class akka.persistence.AbstractPersistentActor
akka$actor$StashSupport$_setter_$akka$actor$StashSupport$$capacity_$eq, akka$actor$StashSupport$_setter_$mailbox_$eq, akka$actor$StashSupport$$capacity, akka$actor$StashSupport$$theStash, akka$actor$StashSupport$$theStash_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$extension_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$instanceId_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$internalStash_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$maxMessageBatchSize_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$pendingInvocations_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$persistingEvents_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$processingCommands_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$unstashFilterPredicate_$eq, akka$persistence$Eventsourced$_setter_$akka$persistence$Eventsourced$$writerUuid_$eq, akka$persistence$Eventsourced$$_lastSequenceNr, akka$persistence$Eventsourced$$_lastSequenceNr_$eq, akka$persistence$Eventsourced$$currentState, akka$persistence$Eventsourced$$currentState_$eq, akka$persistence$Eventsourced$$eventBatch, akka$persistence$Eventsourced$$eventBatch_$eq, akka$persistence$Eventsourced$$extension, akka$persistence$Eventsourced$$instanceId, akka$persistence$Eventsourced$$internalStash, akka$persistence$Eventsourced$$journalBatch, akka$persistence$Eventsourced$$journalBatch_$eq, akka$persistence$Eventsourced$$maxMessageBatchSize, akka$persistence$Eventsourced$$pendingInvocations, akka$persistence$Eventsourced$$pendingStashingPersistInvocations, akka$persistence$Eventsourced$$pendingStashingPersistInvocations_$eq, akka$persistence$Eventsourced$$persistingEvents, akka$persistence$Eventsourced$$processingCommands, akka$persistence$Eventsourced$$sequenceNr, akka$persistence$Eventsourced$$sequenceNr_$eq, akka$persistence$Eventsourced$$unstashFilterPredicate, akka$persistence$Eventsourced$$writeInProgress, akka$persistence$Eventsourced$$writeInProgress_$eq, akka$persistence$Eventsourced$$writerUuid, aroundPostRestart, aroundPostStop, aroundPreRestart, aroundPreStart, aroundReceive, clearStash, createStash, defer, deferAsync, deleteMessages, deleteSnapshot, deleteSnapshots, internalDefer, internalDeferAsync, internalDeleteMessagesBeforeSnapshot, internalPersist, internalPersistAll, internalPersistAllAsync, internalPersistAsync, internalStashOverflowStrategy, journal, journalPluginId, lastSequenceNr, loadSnapshot, mailbox, onPersistFailure, onPersistRejected, onRecoveryFailure, onReplaySuccess, persist, persistAll, persistAllAsync, persistAsync, postStop, prepend, preRestart, receiveCommand, receiveRecover, recovery, recoveryFinished, recoveryRunning, saveSnapshot, snapshotPluginId, snapshotSequenceNr, snapshotStore, snapshotterId, stash, unhandled, unstash, unstashAll, unstashAll
-
Methods inherited from class akka.actor.AbstractActor
akka$actor$Actor$_setter_$context_$eq, akka$actor$Actor$_setter_$self_$eq, context, emptyBehavior, getContext, getSelf, getSender, postRestart, preRestart, receive, receiveBuilder, self, sender, supervisorStrategy
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface akka.actor.Actor
akka$actor$Actor$_setter_$context_$eq, akka$actor$Actor$_setter_$self_$eq, context, postRestart, receive, self, sender, supervisorStrategy
-
Methods inherited from interface akka.persistence.Eventsourced
akka$persistence$Eventsourced$$changeState, akka$persistence$Eventsourced$$flushBatch, akka$persistence$Eventsourced$$flushJournalBatch, akka$persistence$Eventsourced$$peekApplyHandler, akka$persistence$Eventsourced$$recovering, akka$persistence$Eventsourced$$setLastSequenceNr, akka$persistence$Eventsourced$$startRecovery, akka$persistence$Eventsourced$$stashInternally, akka$persistence$Eventsourced$$unstashInternally, akka$persistence$Eventsourced$$updateLastSequenceNr, akka$persistence$Eventsourced$$writeEventFailed, akka$persistence$Eventsourced$$writeEventRejected, akka$persistence$Eventsourced$$writeEventSucceeded
-
Methods inherited from interface akka.actor.StashSupport
context, self
-
-
-
-
Constructor Detail
-
BucketStoreActor
protected BucketStoreActor(RemoteOpsProviderConfig config, String persistenceId, T initialData)
-
-
Method Detail
-
getLocalData
public final T getLocalData()
-
persistenceId
public final String persistenceId()
-
preStart
public void preStart()
- Specified by:
preStart
in interfaceActor
- Overrides:
preStart
in classAbstractActor
-
handleCommand
protected void handleCommand(Object message) throws Exception
- Specified by:
handleCommand
in classAbstractUntypedPersistentActor
- Throws:
Exception
-
handleRecover
protected final void handleRecover(Object message)
- Specified by:
handleRecover
in classAbstractUntypedPersistentActor
-
getConfig
protected final RemoteOpsProviderConfig getConfig()
-
updateLocalBucket
protected final void updateLocalBucket(T data)
-
onBucketRemoved
protected abstract void onBucketRemoved(Address address, Bucket<T> bucket)
Callback to subclasses invoked when a bucket is removed.- Parameters:
address
- Remote addressbucket
- Bucket removed
-
onBucketsUpdated
protected abstract void onBucketsUpdated(Map<Address,Bucket<T>> newBuckets)
Callback to subclasses invoked when the set of remote buckets is updated.- Parameters:
newBuckets
- Map of address to new bucket. Never null, but can be empty.
-
isPersisting
protected boolean isPersisting()
-
-