class

Raft::Log::InMemory

Inherits Raft::Log < Reference < Object

In-memory log implementation for testing and development.

All data is held in memory and lost when the process exits. This is the recommended implementation for unit and integration tests.

Constructors

Instance methods

append(entry : Entry) : Nil

Appends a single entry to the log with conflict detection.

If an existing entry at the same index has a different term, all entries from that index onward are truncated before appending. An entry with matching index and term is skipped (idempotent).

Source
close

Releases any resources held by the log (e.g., file handles).

Source
each_in_range(from : UInt64, to : UInt64, & : Entry -> ) : Nil

Yields each entry in the inclusive range [from, to] without allocating an intermediate array. Preferred over slice on hot paths.

Source
get(index : UInt64) : Entry | Nil

Returns the entry at the given 1-based index, or nil if not present.

Source
last_index

Returns the index of the last entry, or 0 if the log is empty.

Source
last_term

Returns the term of the last entry, or 0 if the log is empty.

Source
load_metadata

Loads the persisted metadata, or returns defaults (term 0, no vote).

Source
load_snapshot

Loads the most recent snapshot, or returns nil if none exists.

Returns a tuple of {last_included_index, last_included_term, snapshot_data}.

Source
save_metadata(meta : Metadata) : Nil

Persists the node's current term and voted-for state.

Source
save_snapshot(last_index : UInt64, last_term : UInt64, data : Bytes) : Nil

Saves a snapshot and compacts the log up to last_index.

All entries with index <= last_index are removed from the log.

Source
slice(from : UInt64, to : UInt64) : Array(Entry)

Returns entries in the inclusive range [from, to].

Source
term_at(index : UInt64) : UInt64 | Nil

Returns the term of the entry at index, or nil if not present.

Source
truncate_from(index : UInt64) : Nil

Removes all entries at index and beyond (inclusive).

Source