Class AbstractReplicatedLogImpl

java.lang.Object
org.opendaylight.controller.cluster.raft.AbstractReplicatedLogImpl
All Implemented Interfaces:
ReplicatedLog

public abstract class AbstractReplicatedLogImpl extends Object implements ReplicatedLog
Abstract class handling the mapping of logical LogEntry Index and the physical list index.
  • 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

      public ReplicatedLogEntry get(long logEntryIndex)
      Description copied from interface: ReplicatedLog
      Return the replicated log entry at the specified index.
      Specified by:
      get in interface ReplicatedLog
      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

      public ReplicatedLogEntry last()
      Description copied from interface: ReplicatedLog
      Return the last replicated log entry in the log or null of not found.
      Specified by:
      last in interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      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

      public boolean append(ReplicatedLogEntry replicatedLogEntry)
      Description copied from interface: ReplicatedLog
      Appends an entry to the log.
      Specified by:
      append in interface ReplicatedLog
      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 interface ReplicatedLog
      Parameters:
      amount - the amount to increase by
    • getFrom

      public List<ReplicatedLogEntry> getFrom(long logEntryIndex)
      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 interface ReplicatedLog
      Parameters:
      logEntryIndex - the index of the first log entry to get.
      Returns:
      the List of entries
    • getFrom

      public List<ReplicatedLogEntry> getFrom(long logEntryIndex, int maxEntries, long maxDataSize)
      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 interface ReplicatedLog
      Parameters:
      logEntryIndex - the index of the first log entry to get
      maxEntries - the maximum number of entries to get
      maxDataSize - 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 interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      Parameters:
      snapshotIndex - the index to set
    • setSnapshotTerm

      public void setSnapshotTerm(long snapshotTerm)
      Description copied from interface: ReplicatedLog
      Sets snapshot term.
      Specified by:
      setSnapshotTerm in interface ReplicatedLog
      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 interface ReplicatedLog
      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 interface ReplicatedLog
      Parameters:
      snapshotCapturedIndex - the new snapshot index
      snapshotCapturedTerm - 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 use ReplicatedLog.snapshotCommit() instead.
      Specified by:
      snapshotCommit in interface ReplicatedLog
      Parameters:
      updateDataSize - true if ReplicatedLog.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 interface ReplicatedLog