Class EnabledRaftStorage

java.lang.Object
org.opendaylight.controller.cluster.raft.spi.RaftStorage
org.opendaylight.controller.cluster.raft.spi.EnabledRaftStorage
All Implemented Interfaces:
EntryStore, SnapshotStore

public final class EnabledRaftStorage extends RaftStorage
A RaftStorage backing persistent mode of RaftActor operation.
  • Constructor Details

  • Method Details

    • journal

      @NonNullByDefault public EntryJournal journal()
      Returns the underlying EntryJournal.
      Returns:
      the underlying EntryJournal
    • startPersistEntry

      @NonNullByDefault public void startPersistEntry(ReplicatedLogEntry entry, RaftCallback<Long> callback)
      Description copied from interface: EntryStore
      Persists an entry to the applicable journal asynchronously.
      Parameters:
      entry - the journal entry to persist
      callback - the callback when persistence is complete
    • discardHead

      public void discardHead(long firstRetainedIndex)
      Description copied from interface: EntryStore
      Deletes journal entries up to, but not including, the given journalIndex.
      Parameters:
      firstRetainedIndex - the journalIndex of the first retained entry
    • discardTail

      public void discardTail(long firstRemovedIndex)
      Description copied from interface: EntryStore
      Delete entries starting from, and including, specified index. The contract is that the callback will be invoked before RaftActor sees any other message.
      Parameters:
      firstRemovedIndex - the journalIndex of first entry to delete
    • checkpointLastApplied

      public void checkpointLastApplied(long commitJournalIndex)
      Description copied from interface: EntryStore
      Record a known value of lastApplied as a recovery optimization. If we can recover this information, recovery can re-apply these entries before we attempt to talk to other members. It is okay to lose this marker, as in that case we will just apply those entries as part of being a follower or becoming a leader.

      This amounts to persisting a lower bound on commitIndex, which is explicitly volatile state. We could remember that instead (or perhaps as well) -- but now we just derive it.

      If we later discover that this index lies beyond current leader's commitIndex, we will ask for a complete snapshot -- which is not particularly nice, but should happen seldom enough for it not to matter much.

      Parameters:
      commitJournalIndex - the journalIndex of the entry which is covered by commitIndex and has been observed as lastApplied.
    • postStart

      protected void postStart() throws IOException
      Specified by:
      postStart in class RaftStorage
      Throws:
      IOException
    • preStop

      protected void preStop()
      Specified by:
      preStop in class RaftStorage