Skip to main content

RaftLog

Struct RaftLog 

Source
pub struct RaftLog { /* private fields */ }
Expand description

In-memory log with persistent backing

Implementations§

Source§

impl RaftLog

Source

pub fn new() -> Self

Create a new empty log

Source

pub fn append(&mut self, term: Term, command: Command) -> LogIndex

Append a new entry to the log

Source

pub fn append_entries(&mut self, entries: Vec<LogEntry>) -> RaftResult<()>

Append multiple entries to the log

Source

pub fn get(&self, index: LogIndex) -> Option<&LogEntry>

Get an entry by index

Source

pub fn get_entries_from( &self, start_index: LogIndex, max_count: usize, ) -> Vec<LogEntry>

Get entries starting from a given index

Source

pub fn get_term(&self, index: LogIndex) -> Option<Term>

Get the term of an entry by index

Source

pub fn last_index(&self) -> LogIndex

Get the index of the last entry

Source

pub fn last_term(&self) -> Term

Get the term of the last entry

Source

pub fn truncate_from(&mut self, from_index: LogIndex) -> RaftResult<()>

Delete entries from a given index onwards

Source

pub fn matches(&self, index: LogIndex, term: Term) -> bool

Check if the log contains an entry at the given index with the given term

Source

pub fn commit_index(&self) -> LogIndex

Get the commit index

Source

pub fn set_commit_index(&mut self, index: LogIndex) -> RaftResult<()>

Set the commit index (must be monotonically increasing)

Source

pub fn applied_index(&self) -> LogIndex

Get the applied index

Source

pub fn set_applied_index(&mut self, index: LogIndex) -> RaftResult<()>

Set the applied index (must be monotonically increasing)

Source

pub fn get_uncommitted_entries(&self) -> Vec<LogEntry>

Get entries that are committed but not yet applied

Source

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:

  • index must be at or below the applied index (already applied to state machine)
  • index must be at or above the current snapshot_index
Source

pub fn get_snapshot_point(&self) -> (LogIndex, Term)

Get the current snapshot point (last compacted index)

Source

pub fn snapshot_index(&self) -> LogIndex

Get the snapshot index

Source

pub fn snapshot_term(&self) -> Term

Get the snapshot term

Source

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.

Source

pub fn entries_since_snapshot(&self) -> u64

Get the number of entries since the last snapshot (useful for threshold checks)

Source

pub fn is_empty(&self) -> bool

Check if the log is empty

Source

pub fn len(&self) -> usize

Get the number of entries in the log

Source

pub fn set_apply_callback<F>(&mut self, callback: F)
where F: FnMut(&LogEntry) -> RaftResult<Vec<u8>> + Send + 'static,

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.

Source

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.

Source

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.

Source

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().

Source

pub fn pending_apply_count(&self) -> usize

Number of committed entries that have not yet been applied.

Source

pub fn is_fully_applied(&self) -> bool

Returns true when the applied index has caught up with the commit index.

Trait Implementations§

Source§

impl Default for RaftLog

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more