class Raft::Log::InMemory

Overview

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.

Defined in:

raft/log/in_memory.cr

Constructors

Instance Method Summary

Instance methods inherited from class Raft::Log

append(entries : Array(Entry)) : Nil append, close : Nil close, get(index : UInt64) : Entry | Nil get, last_index : UInt64 last_index, last_term : UInt64 last_term, load_metadata : Metadata load_metadata, load_snapshot : Tuple(UInt64, UInt64, Bytes) | Nil load_snapshot, save_metadata(meta : Metadata) : Nil save_metadata, save_snapshot(last_index : UInt64, last_term : UInt64, data : Bytes) : Nil save_snapshot, slice(from : UInt64, to : UInt64) : Array(Entry) slice, term_at(index : UInt64) : UInt64 | Nil term_at, truncate_from(index : UInt64) : Nil truncate_from

Constructor Detail

def self.new #

[View source]

Instance Method Detail

def append(entries : Array(Entry)) : Nil #
Description copied from class Raft::Log

Appends entries 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. Entries with matching index and term are skipped (idempotent).


[View source]
def close : Nil #
Description copied from class Raft::Log

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


[View source]
def get(index : UInt64) : Entry | Nil #
Description copied from class Raft::Log

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


[View source]
def last_index : UInt64 #
Description copied from class Raft::Log

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


[View source]
def last_term : UInt64 #
Description copied from class Raft::Log

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


[View source]
def load_metadata : Metadata #
Description copied from class Raft::Log

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


[View source]
def load_snapshot : Tuple(UInt64, UInt64, Bytes) | Nil #
Description copied from class Raft::Log

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

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


[View source]
def save_metadata(meta : Metadata) : Nil #
Description copied from class Raft::Log

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


[View source]
def save_snapshot(last_index : UInt64, last_term : UInt64, data : Bytes) : Nil #
Description copied from class Raft::Log

Saves a snapshot and compacts the log up to last_index.

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


[View source]
def slice(from : UInt64, to : UInt64) : Array(Entry) #
Description copied from class Raft::Log

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


[View source]
def term_at(index : UInt64) : UInt64 | Nil #
Description copied from class Raft::Log

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


[View source]
def truncate_from(index : UInt64) : Nil #
Description copied from class Raft::Log

Removes all entries at index and beyond (inclusive).


[View source]