Class AbstractReplicatedLogImpl
java.lang.Object
org.opendaylight.controller.cluster.raft.AbstractReplicatedLogImpl
- All Implemented Interfaces:
ReplicatedLog
Abstract class handling the mapping of
logical LogEntry Index and the physical list index.
-
Field Summary
Fields inherited from interface org.opendaylight.controller.cluster.raft.ReplicatedLog
NO_MAX_SIZE
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
protected
AbstractReplicatedLogImpl
(long snapshotIndex, long snapshotTerm, List<ReplicatedLogEntry> unAppliedEntries, String logContext) -
Method Summary
Modifier and TypeMethodDescriptionprotected int
adjustedIndex
(long logEntryIndex) boolean
append
(ReplicatedLogEntry replicatedLogEntry) Appends an entry to the log.void
clear
(int startIndex, int endIndex) Clears the journal entries with startIndex (inclusive) and endIndex (exclusive).int
dataSize()
Returns the size of the data in the log (in bytes).get
(long logEntryIndex) Return the replicated log entry at the specified index.getFrom
(long logEntryIndex) Returns a list of log entries starting from the given index to the end of the log.getFrom
(long logEntryIndex, int maxEntries, long maxDataSize) Returns a list of log entries starting from the given index up to the given maximum of entries or the given maximum accumulated size, whichever comes first.long
Returns the index of the snapshot.long
Returns the term of the snapshot.void
increaseJournalLogCapacity
(int amount) Optimization method to increase the capacity of the journal log prior to appending entries.boolean
isInSnapshot
(long logEntryIndex) Checks if the entry is present in a snapshot.boolean
isPresent
(long logEntryIndex) Checks if the entry at the specified index is present or not.last()
Return the last replicated log entry in the log or null of not found.long
Return the index of the last entry in the log or -1 if the log is empty.long
lastTerm()
Return the term of the last entry in the log or -1 if the log is empty.long
removeFrom
(long logEntryIndex) Removes entries from the in-memory log starting at the given index.void
setSnapshotIndex
(long snapshotIndex) Sets the snapshot index in the replicated log.void
setSnapshotTerm
(long snapshotTerm) Sets snapshot term.long
size()
Returns the number of entries in the journal.void
snapshotCommit
(boolean updateDataSize) Sets the Replicated log to state after snapshot success.void
snapshotPreCommit
(long snapshotCapturedIndex, long snapshotCapturedTerm) Handles all the bookkeeping in order to perform a rollback in the event of SaveSnapshotFailure.void
Restores the replicated log to a state in the event of a save snapshot failure.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.opendaylight.controller.cluster.raft.ReplicatedLog
appendAndPersist, captureSnapshotIfReady, removeFromAndPersist, shouldCaptureSnapshot, snapshotCommit
-
Constructor Details
-
AbstractReplicatedLogImpl
protected AbstractReplicatedLogImpl(long snapshotIndex, long snapshotTerm, List<ReplicatedLogEntry> unAppliedEntries, String logContext) -
AbstractReplicatedLogImpl
protected AbstractReplicatedLogImpl()
-
-
Method Details
-
adjustedIndex
protected int adjustedIndex(long logEntryIndex) -
get
Description copied from interface:ReplicatedLog
Return the replicated log entry at the specified index.- Specified by:
get
in interfaceReplicatedLog
- Parameters:
logEntryIndex
- the index of the log entry- Returns:
- the ReplicatedLogEntry if found, otherwise null if the adjusted index less than 0 or greater than the size of the in-memory journal
-
last
Description copied from interface:ReplicatedLog
Return the last replicated log entry in the log or null of not found.- Specified by:
last
in interfaceReplicatedLog
- Returns:
- the last replicated log entry in the log or null of not found.
-
lastIndex
public long lastIndex()Description copied from interface:ReplicatedLog
Return the index of the last entry in the log or -1 if the log is empty.- Specified by:
lastIndex
in interfaceReplicatedLog
- Returns:
- the index of the last entry in the log or -1 if the log is empty.
-
lastTerm
public long lastTerm()Description copied from interface:ReplicatedLog
Return the term of the last entry in the log or -1 if the log is empty.- Specified by:
lastTerm
in interfaceReplicatedLog
- Returns:
- the term of the last entry in the log or -1 if the log is empty.
-
removeFrom
public long removeFrom(long logEntryIndex) Description copied from interface:ReplicatedLog
Removes entries from the in-memory log starting at the given index.- Specified by:
removeFrom
in interfaceReplicatedLog
- Parameters:
logEntryIndex
- the index of the first log entry to remove- Returns:
- the adjusted index of the first log entry removed or -1 if the log entry is not found.
-
append
Description copied from interface:ReplicatedLog
Appends an entry to the log.- Specified by:
append
in interfaceReplicatedLog
- Parameters:
replicatedLogEntry
- the entry to append- Returns:
- true if the entry was successfully appended, false otherwise. An entry can fail to append if the index is already included in the log.
-
increaseJournalLogCapacity
public void increaseJournalLogCapacity(int amount) Description copied from interface:ReplicatedLog
Optimization method to increase the capacity of the journal log prior to appending entries.- Specified by:
increaseJournalLogCapacity
in interfaceReplicatedLog
- Parameters:
amount
- the amount to increase by
-
getFrom
Description copied from interface:ReplicatedLog
Returns a list of log entries starting from the given index to the end of the log.- Specified by:
getFrom
in interfaceReplicatedLog
- Parameters:
logEntryIndex
- the index of the first log entry to get.- Returns:
- the List of entries
-
getFrom
Description copied from interface:ReplicatedLog
Returns a list of log entries starting from the given index up to the given maximum of entries or the given maximum accumulated size, whichever comes first.- Specified by:
getFrom
in interfaceReplicatedLog
- Parameters:
logEntryIndex
- the index of the first log entry to getmaxEntries
- the maximum number of entries to getmaxDataSize
- the maximum accumulated size of the log entries to get- Returns:
- the List of entries meeting the criteria.
-
size
public long size()Description copied from interface:ReplicatedLog
Returns the number of entries in the journal.- Specified by:
size
in interfaceReplicatedLog
- Returns:
- the number of entries
-
dataSize
public int dataSize()Description copied from interface:ReplicatedLog
Returns the size of the data in the log (in bytes).- Specified by:
dataSize
in interfaceReplicatedLog
- Returns:
- the size of the data in the log (in bytes)
-
isPresent
public boolean isPresent(long logEntryIndex) Description copied from interface:ReplicatedLog
Checks if the entry at the specified index is present or not.- Specified by:
isPresent
in interfaceReplicatedLog
- Parameters:
logEntryIndex
- the index of the log entry- Returns:
- true if the entry is present in the in-memory journal
-
isInSnapshot
public boolean isInSnapshot(long logEntryIndex) Description copied from interface:ReplicatedLog
Checks if the entry is present in a snapshot.- Specified by:
isInSnapshot
in interfaceReplicatedLog
- Parameters:
logEntryIndex
- the index of the log entry- Returns:
- true if the entry is in the snapshot. false if the entry is not in the snapshot even if the entry may be present in the replicated log
-
getSnapshotIndex
public long getSnapshotIndex()Description copied from interface:ReplicatedLog
Returns the index of the snapshot.- Specified by:
getSnapshotIndex
in interfaceReplicatedLog
- Returns:
- the index from which the snapshot was created. -1 otherwise.
-
getSnapshotTerm
public long getSnapshotTerm()Description copied from interface:ReplicatedLog
Returns the term of the snapshot.- Specified by:
getSnapshotTerm
in interfaceReplicatedLog
- Returns:
- the term of the index from which the snapshot was created. -1 otherwise
-
setSnapshotIndex
public void setSnapshotIndex(long snapshotIndex) Description copied from interface:ReplicatedLog
Sets the snapshot index in the replicated log.- Specified by:
setSnapshotIndex
in interfaceReplicatedLog
- Parameters:
snapshotIndex
- the index to set
-
setSnapshotTerm
public void setSnapshotTerm(long snapshotTerm) Description copied from interface:ReplicatedLog
Sets snapshot term.- Specified by:
setSnapshotTerm
in interfaceReplicatedLog
- Parameters:
snapshotTerm
- the term to set
-
clear
public void clear(int startIndex, int endIndex) Description copied from interface:ReplicatedLog
Clears the journal entries with startIndex (inclusive) and endIndex (exclusive).- Specified by:
clear
in interfaceReplicatedLog
- Parameters:
startIndex
- the start index (inclusive)endIndex
- the end index (exclusive)
-
snapshotPreCommit
public void snapshotPreCommit(long snapshotCapturedIndex, long snapshotCapturedTerm) Description copied from interface:ReplicatedLog
Handles all the bookkeeping in order to perform a rollback in the event of SaveSnapshotFailure.- Specified by:
snapshotPreCommit
in interfaceReplicatedLog
- Parameters:
snapshotCapturedIndex
- the new snapshot indexsnapshotCapturedTerm
- the new snapshot term
-
snapshotCommit
public void snapshotCommit(boolean updateDataSize) Description copied from interface:ReplicatedLog
Sets the Replicated log to state after snapshot success. Most users will want to useReplicatedLog.snapshotCommit()
instead.- Specified by:
snapshotCommit
in interfaceReplicatedLog
- Parameters:
updateDataSize
- true ifReplicatedLog.dataSize()
should also be updated
-
snapshotRollback
public void snapshotRollback()Description copied from interface:ReplicatedLog
Restores the replicated log to a state in the event of a save snapshot failure.- Specified by:
snapshotRollback
in interfaceReplicatedLog
-