All Implemented Interfaces:
Actor, ExecuteInSelfActor

public class Shard extends RaftActor
A Shard represents a portion of the logical data tree.

Our Shard uses InMemoryDataTree as its internal representation and delegates all requests it

  • Field Details

  • Method Details

    • postStop

      public final void postStop() throws Exception
      Specified by:
      postStop in interface Actor
      Overrides:
      postStop in class RaftActor
      Throws:
      Exception
    • recoveryObserver

      protected final RecoveryObserver recoveryObserver()
      Overrides:
      recoveryObserver in class RaftActor
    • handleNonRaftCommand

      protected void handleNonRaftCommand(Object message)
      Description copied from class: RaftActor
      Method exposed for subclasses to plug-in their logic. This method is invoked by RaftActor.handleReceive(Object) for messages which are not handled by this class. Subclasses overriding this class should fall back to this implementation for messages which they do not handle
      Overrides:
      handleNonRaftCommand in class RaftActor
      Parameters:
      message - Incoming command message
    • roleChangeNotifier

      protected final ActorRef roleChangeNotifier()
      Description copied from class: RaftActor
      Notifier Actor for this RaftActor to notify when a role change happens.
      Specified by:
      roleChangeNotifier in class RaftActor
      Returns:
      ActorRef - ActorRef of the notifier or null if none.
    • wrapLeaderStateChanged

      protected final LeaderStateChanged wrapLeaderStateChanged(LeaderStateChanged change)
      Overrides:
      wrapLeaderStateChanged in class RaftActor
    • isIsolatedLeader

      protected boolean isIsolatedLeader()
    • getRaftActorSnapshotCohort

      protected final org.opendaylight.controller.cluster.datastore.ShardSnapshotCohort getRaftActorSnapshotCohort()
      Description copied from class: RaftActor
      Returns the RaftActorSnapshotCohort to participate in snapshot captures.
      Specified by:
      getRaftActorSnapshotCohort in class RaftActor
    • getRaftActorRecoveryCohort

      protected final RaftActorRecoveryCohort getRaftActorRecoveryCohort()
      Description copied from class: RaftActor
      Returns the RaftActorRecoveryCohort to participate in persistence recovery.
      Specified by:
      getRaftActorRecoveryCohort in class RaftActor
    • getRestoreFromSnapshot

      protected final Snapshot getRestoreFromSnapshot()
      Description copied from class: RaftActor
      Returns the snapshot to restore from on recovery.
      Specified by:
      getRestoreFromSnapshot in class RaftActor
      Returns:
      the snapshot or null if there's no snapshot to restore
    • onRecoveryComplete

      protected void onRecoveryComplete()
      Description copied from class: RaftActor
      This method is called when recovery is complete.
      Specified by:
      onRecoveryComplete in class RaftActor
    • applyCommand

      protected final void applyCommand(Identifier identifier, StateCommand command)
      Description copied from class: RaftActor
      Apply a StateCommand to update the actor's state.
      Specified by:
      applyCommand in class RaftActor
      Parameters:
      identifier - The identifier of the persisted data. This is also the same identifier that was passed to RaftActor.submitCommand(Identifier, AbstractStateCommand, boolean) by the derived actor. May be null when the RaftActor is behaving as a follower or during recovery
      command - the StateCommand to apply
    • onStateChanged

      protected final void onStateChanged()
      Description copied from class: RaftActor
      This method will be called by the RaftActor when the state of the RaftActor changes. The derived actor can then use methods like isLeader or getLeader to do something useful
      Specified by:
      onStateChanged in class RaftActor
    • onLeaderChanged

      protected final void onLeaderChanged(String oldLeader, String newLeader)
      Overrides:
      onLeaderChanged in class RaftActor
    • pauseLeader

      protected final void pauseLeader(Runnable operation)
      Description copied from class: RaftActor
      This method is called prior to operations such as leadership transfer and actor shutdown when the leader must pause or stop its duties. This method allows derived classes to gracefully pause or finish current work prior to performing the operation. On completion of any work, the run method must be called on the given Runnable to proceed with the given operation. Important: the run method must be called on this actor's thread dispatcher as as it modifies internal state.

      The default implementation immediately runs the operation.

      Overrides:
      pauseLeader in class RaftActor
      Parameters:
      operation - the operation to run
    • unpauseLeader

      protected final void unpauseLeader()
      Description copied from class: RaftActor
      This method is invoked when the actions hooked to the leader becoming paused failed to execute and the leader should resume normal operations.

      Note this method can be invoked even before the operation supplied to RaftActor.pauseLeader(Runnable) is invoked.

      Overrides:
      unpauseLeader in class RaftActor
    • newOnDemandRaftStateBuilder

      protected final OnDemandRaftState.AbstractBuilder<?,?> newOnDemandRaftStateBuilder()
      Overrides:
      newOnDemandRaftStateBuilder in class RaftActor
    • builder

      public static Shard.Builder builder()