pub struct FencedWal { /* private fields */ }Expand description
WAL manager with epoch fencing for split-brain protection
This is a wrapper around the standard WAL that adds:
- Epoch-based writer fencing
- CRC chain verification
- Split-brain detection during recovery
Implementations§
Source§impl FencedWal
impl FencedWal
Sourcepub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
Open or create a fenced WAL
If the WAL exists with a different writer_id in the same epoch, returns an error indicating split-brain.
Sourcepub fn last_commit_lsn(&self) -> u64
pub fn last_commit_lsn(&self) -> u64
Get last committed LSN
Sourcepub fn entry_count(&self) -> u64
pub fn entry_count(&self) -> u64
Get entry count
Sourcepub fn replay<F>(&mut self, callback: F) -> Result<u64>
pub fn replay<F>(&mut self, callback: F) -> Result<u64>
Replay all entries, verifying chain integrity
Sourcepub fn replay_committed<F>(&mut self, callback: F) -> Result<u64>
pub fn replay_committed<F>(&mut self, callback: F) -> Result<u64>
Replay only committed entries
Auto Trait Implementations§
impl Freeze for FencedWal
impl RefUnwindSafe for FencedWal
impl Send for FencedWal
impl Sync for FencedWal
impl Unpin for FencedWal
impl UnsafeUnpin for FencedWal
impl UnwindSafe for FencedWal
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
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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