pub enum FormatActivationError {
NotLeader,
TargetOutOfRange {
target: u8,
min: u8,
max: u8,
},
MembersBelowTarget {
target: u8,
incapable: Vec<(u64, u8)>,
},
MemberUnreachable {
node_id: u64,
detail: String,
},
MembershipChangedSinceGate {
target: u8,
},
ProposalFailed(String),
}Expand description
Why an operator-initiated format activation could not proceed past the gate.
Returned by StandaloneHost::initiate_format_activation. None of these are
retryable in place by the caller without remediation: NotLeader means
re-issue against the leader; MembersBelowTarget means upgrade or remove
the named members and re-issue; MemberUnreachable means the cluster could
not confirm a member’s capability and the gate fails closed rather than
guess; TargetOutOfRange means re-issue with a target the local binary
can actually read or upgrade the binary.
Variants§
NotLeader
This node is not the raft leader, so it cannot drive an activation.
TargetOutOfRange
target is outside the local binary’s readable range
[min, max]. The gate short-circuits here before any peer RPC: an
out-of-range target is the same answer regardless of peer reports,
and the operator gets a fast, unambiguous rejection. The same
surface is used by the apply arm’s defense-in-depth — see
ApplyOutcome::FormatActivationTargetOutOfRange.
MembersBelowTarget
At least one current member cannot read target. incapable lists the
offending (node_id, max_readable_version) pairs for the operator.
MemberUnreachable
A member could not be queried for its capabilities; the gate fails closed.
MembershipChangedSinceGate
The membership committed as of the bump’s own log position was no longer a subset of the set the gate observed — an un-gated member was added or promoted between the live gate query and the entry’s commit/apply, so the bump applied as a no-op. Re-gate and re-issue.
ProposalFailed(String)
The proposal (raft.client_write) failed before / during commit —
e.g. lost leadership, the cluster lost quorum, or a fatal raft error.
Trait Implementations§
Source§impl Debug for FormatActivationError
impl Debug for FormatActivationError
Source§impl Display for FormatActivationError
impl Display for FormatActivationError
Source§impl Error for FormatActivationError
impl Error for FormatActivationError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for FormatActivationError
impl RefUnwindSafe for FormatActivationError
impl Send for FormatActivationError
impl Sync for FormatActivationError
impl Unpin for FormatActivationError
impl UnsafeUnpin for FormatActivationError
impl UnwindSafe for FormatActivationError
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
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>
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