pub struct RaftLog { /* private fields */ }Expand description
In-memory log with persistent backing
Implementations§
Source§impl RaftLog
impl RaftLog
Sourcepub fn append(&mut self, term: Term, command: Command) -> LogIndex
pub fn append(&mut self, term: Term, command: Command) -> LogIndex
Append a new entry to the log
Sourcepub fn append_entries(&mut self, entries: Vec<LogEntry>) -> RaftResult<()>
pub fn append_entries(&mut self, entries: Vec<LogEntry>) -> RaftResult<()>
Append multiple entries to the log
Sourcepub fn get_entries_from(
&self,
start_index: LogIndex,
max_count: usize,
) -> Vec<LogEntry>
pub fn get_entries_from( &self, start_index: LogIndex, max_count: usize, ) -> Vec<LogEntry>
Get entries starting from a given index
Sourcepub fn last_index(&self) -> LogIndex
pub fn last_index(&self) -> LogIndex
Get the index of the last entry
Sourcepub fn truncate_from(&mut self, from_index: LogIndex) -> RaftResult<()>
pub fn truncate_from(&mut self, from_index: LogIndex) -> RaftResult<()>
Delete entries from a given index onwards
Sourcepub fn matches(&self, index: LogIndex, term: Term) -> bool
pub fn matches(&self, index: LogIndex, term: Term) -> bool
Check if the log contains an entry at the given index with the given term
Sourcepub fn commit_index(&self) -> LogIndex
pub fn commit_index(&self) -> LogIndex
Get the commit index
Sourcepub fn set_commit_index(&mut self, index: LogIndex) -> RaftResult<()>
pub fn set_commit_index(&mut self, index: LogIndex) -> RaftResult<()>
Set the commit index (must be monotonically increasing)
Sourcepub fn applied_index(&self) -> LogIndex
pub fn applied_index(&self) -> LogIndex
Get the applied index
Sourcepub fn set_applied_index(&mut self, index: LogIndex) -> RaftResult<()>
pub fn set_applied_index(&mut self, index: LogIndex) -> RaftResult<()>
Set the applied index (must be monotonically increasing)
Sourcepub fn get_uncommitted_entries(&self) -> Vec<LogEntry>
pub fn get_uncommitted_entries(&self) -> Vec<LogEntry>
Get entries that are committed but not yet applied
Sourcepub fn compact_until(&mut self, index: LogIndex, term: Term) -> RaftResult<()>
pub fn compact_until(&mut self, index: LogIndex, term: Term) -> RaftResult<()>
Compact the log up to and including the given index
This removes all log entries up to index, setting the snapshot
metadata to reflect the compacted state. The compacted entries are
permanently discarded.
Preconditions:
indexmust be at or below the applied index (already applied to state machine)indexmust be at or above the current snapshot_index
Sourcepub fn get_snapshot_point(&self) -> (LogIndex, Term)
pub fn get_snapshot_point(&self) -> (LogIndex, Term)
Get the current snapshot point (last compacted index)
Sourcepub fn snapshot_index(&self) -> LogIndex
pub fn snapshot_index(&self) -> LogIndex
Get the snapshot index
Sourcepub fn snapshot_term(&self) -> Term
pub fn snapshot_term(&self) -> Term
Get the snapshot term
Sourcepub fn install_snapshot(
&mut self,
last_included_index: LogIndex,
last_included_term: Term,
)
pub fn install_snapshot( &mut self, last_included_index: LogIndex, last_included_term: Term, )
Reset the log state after installing a snapshot from a leader
This discards all existing log entries and sets the log’s base to the snapshot’s last included entry.
Sourcepub fn entries_since_snapshot(&self) -> u64
pub fn entries_since_snapshot(&self) -> u64
Get the number of entries since the last snapshot (useful for threshold checks)
Sourcepub fn set_apply_callback<F>(&mut self, callback: F)
pub fn set_apply_callback<F>(&mut self, callback: F)
Register a callback that is invoked for every entry applied to the
state machine. The callback receives the LogEntry and must
return output bytes or an error.
Sourcepub fn apply_committed_entries(&mut self) -> RaftResult<Vec<ApplyResult>>
pub fn apply_committed_entries(&mut self) -> RaftResult<Vec<ApplyResult>>
Apply all committed-but-not-yet-applied entries, invoking the registered callback (if any) for each one.
Returns an ApplyResult per applied entry. If no entries are
pending, an empty vector is returned.
Sourcepub fn apply_batch(
&mut self,
max_entries: usize,
) -> RaftResult<Vec<ApplyResult>>
pub fn apply_batch( &mut self, max_entries: usize, ) -> RaftResult<Vec<ApplyResult>>
Apply up to max_entries committed-but-not-yet-applied entries.
If the callback returns an error mid-batch the applied_index is
rolled back to its value before the call and the error is
propagated.
Sourcepub fn create_snapshot(&self) -> RaftResult<SnapshotData>
pub fn create_snapshot(&self) -> RaftResult<SnapshotData>
Create a SnapshotData reflecting the current applied state.
The data field is left empty; callers should fill it via
StateMachine::snapshot().
Sourcepub fn pending_apply_count(&self) -> usize
pub fn pending_apply_count(&self) -> usize
Number of committed entries that have not yet been applied.
Sourcepub fn is_fully_applied(&self) -> bool
pub fn is_fully_applied(&self) -> bool
Returns true when the applied index has caught up with the
commit index.