pub struct StandaloneCommitLog { /* private fields */ }Expand description
The standalone commit log (spec section 9.4): one shared WAL + one
group-commit coordinator are the single authority through which commands
become committed. term is always 0; the log index is the commit epoch.
Trait Implementations§
Source§impl CommitLog for StandaloneCommitLog
impl CommitLog for StandaloneCommitLog
Source§fn propose(
&self,
command: CommandEnvelope,
control: &ExecutionControl,
) -> Result<CommitReceipt, LogError>
fn propose( &self, command: CommandEnvelope, control: &ExecutionControl, ) -> Result<CommitReceipt, LogError>
Persists one command envelope as a committed WAL transaction
(DdlOp::Command record + commit marker) and waits for group-commit
durability. The assigned epoch is published once durable; on any error
the ticket is abandoned so the visibility watermark never stalls behind
an epoch hole.
Source§fn read_committed(
&self,
after: LogPosition,
limit: usize,
) -> Result<Vec<CommittedEntry>, LogError>
fn read_committed( &self, after: LogPosition, limit: usize, ) -> Result<Vec<CommittedEntry>, LogError>
Replays committed command envelopes with position.index > after.index
in commit order, using the existing WAL reader. Only transactions sealed
by a durable TxnCommit marker are returned, and replay is constrained
to the authenticated durable WAL head, so unacknowledged appends never
surface. after.term is ignored: the standalone log has a single term.
Reconstructed commit_ts values carry only the physical component: the
WAL ledger stores physical_micros as nanos, not the HLC logical
counter or node tiebreaker (byte format unchanged from the Stage 0
gate). Within one open, receipts issued by Self::seal_transaction
remain the exact commit timestamps; replayed values order identically
at microsecond granularity.
Source§fn applied_position(&self) -> LogPosition
fn applied_position(&self) -> LogPosition
The highest WAL sequence made durable by group commit. In standalone mode the local state machine applies everything the WAL makes durable.
Note the Stage 0 units: receipt positions use the commit epoch while
this watermark uses the WAL record sequence (durable_seq), which
advances by several records per commit. Stage 2 unifies both behind one
replicated log index.
Source§fn create_snapshot(&self) -> Result<LogSnapshot, LogError>
fn create_snapshot(&self) -> Result<LogSnapshot, LogError>
Unsupported in Stage 0: replicated log-snapshot boundaries arrive with the consensus adapter in Stage 2 (spec section 9.4). The standalone database’s checkpoint/backup machinery already covers local images.
Source§fn install_snapshot(&self, _snapshot: LogSnapshot) -> Result<(), LogError>
fn install_snapshot(&self, _snapshot: LogSnapshot) -> Result<(), LogError>
Unsupported in Stage 0: see CommitLog::create_snapshot.
Auto Trait Implementations§
impl !RefUnwindSafe for StandaloneCommitLog
impl !UnwindSafe for StandaloneCommitLog
impl Freeze for StandaloneCommitLog
impl Send for StandaloneCommitLog
impl Sync for StandaloneCommitLog
impl Unpin for StandaloneCommitLog
impl UnsafeUnpin for StandaloneCommitLog
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more