Interface ImmediateEntryStore
- All Superinterfaces:
EntryStore
- All Known Implementing Classes:
DisabledRaftStorage
An immediate
EntryStore. Offloads asynchronous persist responses via RaftStorageCompleter
exposed via EntryStore.completer().-
Method Summary
Modifier and TypeMethodDescriptiondefault voidcheckpointLastApplied(long commitJournalIndex) Record a known value oflastAppliedas a recovery optimization.default voiddiscardHead(long firstRetainedIndex) Deletes journal entries up to, but not including, the givenjournalIndex.default voiddiscardTail(long firstRemovedIndex) Delete entries starting from, and including, specified index.default voidstartPersistEntry(ReplicatedLogEntry entry, RaftCallback<Long> callback) Persists an entry to the applicable journal asynchronously.Methods inherited from interface org.opendaylight.controller.cluster.raft.spi.EntryStore
completer, persistEntry
-
Method Details
-
startPersistEntry
Description copied from interface:EntryStorePersists an entry to the applicable journal asynchronously.- Specified by:
startPersistEntryin interfaceEntryStore- Parameters:
entry- the journal entry to persistcallback- the callback when persistence is complete
-
discardHead
default void discardHead(long firstRetainedIndex) Description copied from interface:EntryStoreDeletes journal entries up to, but not including, the givenjournalIndex.- Specified by:
discardHeadin interfaceEntryStore- Parameters:
firstRetainedIndex- thejournalIndexof the first retained entry
-
discardTail
default void discardTail(long firstRemovedIndex) Description copied from interface:EntryStoreDelete entries starting from, and including, specified index. The contract is that the callback will be invoked beforeRaftActorsees any other message.- Specified by:
discardTailin interfaceEntryStore- Parameters:
firstRemovedIndex- thejournalIndexof first entry to delete
-
checkpointLastApplied
default void checkpointLastApplied(long commitJournalIndex) Description copied from interface:EntryStoreRecord a known value oflastAppliedas 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.- Specified by:
checkpointLastAppliedin interfaceEntryStore- Parameters:
commitJournalIndex-the journalIndexof the entry which is covered bycommitIndexand has been observed aslastApplied.
-