Skip to main content

GroupCommitter

Struct GroupCommitter 

Source
pub struct GroupCommitter { /* private fields */ }
Expand description

Thread-safe group commit coordinator.

Multiple threads call submit() which blocks until the record is durable. Internally, one thread becomes the commit leader and batches all pending writes into a single WAL flush.

§Safety invariants

  • A non-leader thread only returns durable: true if it confirms its write was drained from the pending queue and the leader’s fsync succeeded (checked via last_commit_failed).
  • If the leader’s fsync fails, all non-leader threads whose writes were in the failed batch receive an error.
  • durable_lsn is updated only after a successful fsync.

Implementations§

Source§

impl GroupCommitter

Source

pub fn new() -> Self

Create a new group committer.

Source

pub fn submit( &self, writer: &Mutex<WalWriter>, write: PendingWrite, ) -> Result<CommitResult>

Submit a write and block until it’s durable.

Returns the assigned LSN once the batch containing this write has been fsynced to disk. If fsync fails, the error is propagated to all threads whose writes were in the failed batch.

Source

pub fn durable_lsn(&self) -> u64

Current durable LSN (all records <= this are on disk).

Trait Implementations§

Source§

impl Default for GroupCommitter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more