pub struct Wal { /* private fields */ }Expand description
Group-commit WAL writer. Append is O(buffer copy) and never fsyncs; callers
(or a timer) drive Wal::sync.
Implementations§
Source§impl Wal
impl Wal
Sourcepub fn create(path: impl AsRef<Path>, epoch_created: Epoch) -> Result<Self>
pub fn create(path: impl AsRef<Path>, epoch_created: Epoch) -> Result<Self>
Create a new WAL segment, truncating any existing file at path.
Sourcepub fn create_with_cipher(
path: impl AsRef<Path>,
epoch_created: Epoch,
cipher: Option<Box<dyn Cipher>>,
segment_no: u64,
) -> Result<Self>
pub fn create_with_cipher( path: impl AsRef<Path>, epoch_created: Epoch, cipher: Option<Box<dyn Cipher>>, segment_no: u64, ) -> Result<Self>
Create a new WAL segment with optional frame-level encryption. The
persisted segment_no namespaces AES-GCM nonces across segments under
the constant WAL DEK (spec §7.1, review fix #23).
Sourcepub fn append_txn(&mut self, txn_id: u64, op: Op) -> Result<Epoch>
pub fn append_txn(&mut self, txn_id: u64, op: Op) -> Result<Epoch>
Append a record belonging to transaction txn_id. Assigns the next
monotonic sequence (the first record after a WAL created at E gets
E + 1), writes it, and returns the assigned sequence. Does NOT fsync —
call Wal::sync (or rely on the byte threshold). The WAL sequence is
independent of the row commit epoch; the engine tracks commit epochs
separately.
Sourcepub fn append_system(&mut self, op: Op) -> Result<Epoch>
pub fn append_system(&mut self, op: Op) -> Result<Epoch>
Append a system record (txn_id == SYSTEM_TXN_ID), e.g. Flush.
Sourcepub fn sync(&mut self) -> Result<()>
pub fn sync(&mut self) -> Result<()>
Flush the buffer and fsync the file. This is the durability point.
Sourcepub fn unflushed_bytes(&self) -> u64
pub fn unflushed_bytes(&self) -> u64
Pending bytes not yet fsynced.
Sourcepub fn next_seq_val(&self) -> u64
pub fn next_seq_val(&self) -> u64
The next sequence number this writer will assign (i.e. last assigned + 1). Exposed so a shared-WAL group-sync can report the durable high-water mark.
Sourcepub fn set_sync_byte_threshold(&mut self, threshold: u64)
pub fn set_sync_byte_threshold(&mut self, threshold: u64)
Tune the auto-sync threshold (bytes of buffered WAL before an automatic
fsync). 0 disables auto-sync entirely (manual Wal::sync only) —
useful for latency benchmarks and for grouping many writes under one
explicit commit.
pub fn path(&self) -> &Path
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Wal
impl !UnwindSafe for Wal
impl Freeze for Wal
impl Send for Wal
impl Sync for Wal
impl Unpin for Wal
impl UnsafeUnpin for Wal
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