pub struct DrainOutcome {
pub member: NodeIdentity,
pub handoffs: Vec<Result<TransitionOutcome, TransitionError>>,
pub evacuations: Vec<ReplicaEvacuation>,
pub blocked: Vec<DrainBlock>,
}Expand description
The outcome of running a drain: the result of each scheduled step (a hand-off
outcome or an evacuation), and the ranges that stayed blocked. The membership
catalog is untouched — removal is the separate, gated
commit_drain_removal step.
Fields§
§member: NodeIdentity§handoffs: Vec<Result<TransitionOutcome, TransitionError>>Each owned-range hand-off’s transition result, in plan order.
evacuations: Vec<ReplicaEvacuation>Each replica evacuation that was applied, in plan order.
blocked: Vec<DrainBlock>Ranges that could not be scheduled and still block the drain.
Implementations§
Source§impl DrainOutcome
impl DrainOutcome
Sourcepub fn is_drained(&self) -> bool
pub fn is_drained(&self) -> bool
Did every scheduled step apply cleanly and nothing stay blocked? When true,
the member now owns and replicates nothing and commit_drain_removal
will succeed.
Trait Implementations§
Source§impl Clone for DrainOutcome
impl Clone for DrainOutcome
Source§fn clone(&self) -> DrainOutcome
fn clone(&self) -> DrainOutcome
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for DrainOutcome
impl Debug for DrainOutcome
impl Eq for DrainOutcome
Source§impl PartialEq for DrainOutcome
impl PartialEq for DrainOutcome
Source§fn eq(&self, other: &DrainOutcome) -> bool
fn eq(&self, other: &DrainOutcome) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for DrainOutcome
Auto Trait Implementations§
impl Freeze for DrainOutcome
impl RefUnwindSafe for DrainOutcome
impl Send for DrainOutcome
impl Sync for DrainOutcome
impl Unpin for DrainOutcome
impl UnsafeUnpin for DrainOutcome
impl UnwindSafe for DrainOutcome
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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