pub struct RollbackCoordinator;Expand description
The deposed-primary auto-rollback state machine.
Implementations§
Source§impl RollbackCoordinator
impl RollbackCoordinator
Sourcepub fn run(
req: &RollbackRequest,
tx: &mut dyn RollbackTransport,
) -> Result<RollbackOutcome, RollbackError>
pub fn run( req: &RollbackRequest, tx: &mut dyn RollbackTransport, ) -> Result<RollbackOutcome, RollbackError>
Execute the auto-rollback described by req, driving the node
through tx.
Ordering is chosen so the hard guarantees hold even on partial failure:
- Compute & guard the boundary — refuse if it would cross the watermark, changing nothing.
- If there is no divergent tail, just rejoin.
- Read and persist the tail before removing anything; abort if it cannot be preserved.
- Recover-to-LSN to the common point.
- Fire the loud operator event.
- Rejoin as a replica of the new primary.
Auto Trait Implementations§
impl Freeze for RollbackCoordinator
impl RefUnwindSafe for RollbackCoordinator
impl Send for RollbackCoordinator
impl Sync for RollbackCoordinator
impl Unpin for RollbackCoordinator
impl UnsafeUnpin for RollbackCoordinator
impl UnwindSafe for RollbackCoordinator
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request