pub struct AssignmentDrainTransition {
pub predecessor: CheckpointAssignmentFence,
pub target: CheckpointAssignmentFence,
pub leader: LeaderProof,
}Expand description
Exact predecessor-to-target transition at which every predecessor source must stop input.
Required drain participants always come from predecessor. A process that only joins the
target has no predecessor input authority and therefore cannot block the drain quorum.
Fields§
§predecessor: CheckpointAssignmentFenceAssignment that remains authoritative through the pre-rotation checkpoint.
target: CheckpointAssignmentFenceExact successor assignment to install after that checkpoint is durable.
leader: LeaderProofLeader term that created the durable draining transition.
Implementations§
Source§impl AssignmentDrainTransition
impl AssignmentDrainTransition
Sourcepub fn new(
predecessor: CheckpointAssignmentFence,
target: CheckpointAssignmentFence,
leader: LeaderProof,
) -> Result<Self, String>
pub fn new( predecessor: CheckpointAssignmentFence, target: CheckpointAssignmentFence, leader: LeaderProof, ) -> Result<Self, String>
Construct and validate one exact successor transition.
§Errors
Returns an error when either certificate, the version relation, vnode count, or captured leader term is not canonical for the predecessor roster.
Sourcepub fn is_canonical(&self) -> bool
pub fn is_canonical(&self) -> bool
Whether the transition is an exact, authority-bound successor of the predecessor.
Sourcepub fn id(&self) -> AssignmentDrainId
pub fn id(&self) -> AssignmentDrainId
Compact identity carried by source commands and receipts.
Sourcepub fn required_participants(&self) -> &[CheckpointParticipant]
pub fn required_participants(&self) -> &[CheckpointParticipant]
Exact processes that must publish drain acknowledgements.
Trait Implementations§
Source§impl Clone for AssignmentDrainTransition
impl Clone for AssignmentDrainTransition
Source§fn clone(&self) -> AssignmentDrainTransition
fn clone(&self) -> AssignmentDrainTransition
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AssignmentDrainTransition
impl Debug for AssignmentDrainTransition
Source§impl<'de> Deserialize<'de> for AssignmentDrainTransition
impl<'de> Deserialize<'de> for AssignmentDrainTransition
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for AssignmentDrainTransition
impl StructuralPartialEq for AssignmentDrainTransition
Auto Trait Implementations§
impl Freeze for AssignmentDrainTransition
impl RefUnwindSafe for AssignmentDrainTransition
impl Send for AssignmentDrainTransition
impl Sync for AssignmentDrainTransition
impl Unpin for AssignmentDrainTransition
impl UnsafeUnpin for AssignmentDrainTransition
impl UnwindSafe for AssignmentDrainTransition
Blanket Implementations§
impl<T> Allocation for T
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].