Skip to main content

TwoPhaseJournal

Trait TwoPhaseJournal 

Source
pub trait TwoPhaseJournal: Send + Sync {
    // Required methods
    fn on_prepared<'a>(
        &'a self,
        tx_id: &'a [u8],
        step: usize,
        total: usize,
    ) -> Pin<Box<dyn Future<Output = Result<(), TwoPhaseJournalError>> + Send + 'a>>;
    fn on_committed<'a>(
        &'a self,
        tx_id: &'a [u8],
        step: usize,
        total: usize,
    ) -> Pin<Box<dyn Future<Output = Result<(), TwoPhaseJournalError>> + Send + 'a>>;
    fn on_completed<'a>(
        &'a self,
        tx_id: &'a [u8],
    ) -> Pin<Box<dyn Future<Output = Result<(), TwoPhaseJournalError>> + Send + 'a>>;
    fn load<'a>(
        &'a self,
        tx_id: &'a [u8],
    ) -> Pin<Box<dyn Future<Output = Result<Option<TwoPhaseJournalRecord>, TwoPhaseJournalError>> + Send + 'a>>;
}
Expand description

Optional journal hook for propose_cross_shard_2pc / resume_cross_shard_2pc.

Required Methods§

Source

fn on_prepared<'a>( &'a self, tx_id: &'a [u8], step: usize, total: usize, ) -> Pin<Box<dyn Future<Output = Result<(), TwoPhaseJournalError>> + Send + 'a>>

Persist progress after a successful prepare step.

Source

fn on_committed<'a>( &'a self, tx_id: &'a [u8], step: usize, total: usize, ) -> Pin<Box<dyn Future<Output = Result<(), TwoPhaseJournalError>> + Send + 'a>>

Persist progress after a successful commit step.

Source

fn on_completed<'a>( &'a self, tx_id: &'a [u8], ) -> Pin<Box<dyn Future<Output = Result<(), TwoPhaseJournalError>> + Send + 'a>>

Mark the transaction fully committed (may delete the journal row).

Source

fn load<'a>( &'a self, tx_id: &'a [u8], ) -> Pin<Box<dyn Future<Output = Result<Option<TwoPhaseJournalRecord>, TwoPhaseJournalError>> + Send + 'a>>

Load coordinator progress for resume.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§