pub struct TwoPhaseCommit {
pub phase1_complete: bool,
pub phase2_complete: bool,
pub rollback_needed: bool,
}Expand description
Two-phase commit strategy for episode storage
Fields§
§phase1_complete: boolPhase 1 (cache write) completed
phase2_complete: boolPhase 2 (durable write) completed
rollback_needed: boolRollback is needed
Implementations§
Source§impl TwoPhaseCommit
impl TwoPhaseCommit
Sourcepub async fn phase1<F, Fut>(&mut self, operation: F) -> Result<()>
pub async fn phase1<F, Fut>(&mut self, operation: F) -> Result<()>
Execute phase 1 - write to cache
Sourcepub async fn phase2<F, Fut>(&mut self, operation: F) -> Result<()>
pub async fn phase2<F, Fut>(&mut self, operation: F) -> Result<()>
Execute phase 2 - write to durable storage
Sourcepub async fn rollback<F, Fut>(&mut self, operation: F) -> Result<()>
pub async fn rollback<F, Fut>(&mut self, operation: F) -> Result<()>
Rollback phase 1 if phase 2 failed
Sourcepub fn is_complete(&self) -> bool
pub fn is_complete(&self) -> bool
Check if commit is complete
Trait Implementations§
Source§impl Debug for TwoPhaseCommit
impl Debug for TwoPhaseCommit
Auto Trait Implementations§
impl Freeze for TwoPhaseCommit
impl RefUnwindSafe for TwoPhaseCommit
impl Send for TwoPhaseCommit
impl Sync for TwoPhaseCommit
impl Unpin for TwoPhaseCommit
impl UnsafeUnpin for TwoPhaseCommit
impl UnwindSafe for TwoPhaseCommit
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 moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.