pub enum MigrationFailureReason {
NotReady,
FactoryNotFound,
ComputeNotSupported,
StateFailed(String),
AlreadyMigrating,
IdentityTransportFailed(String),
NotReadyTimeout {
attempts: u8,
},
}Expand description
Structured reason the migration target rejected (or the
orchestrator aborted) a migration. Replaces the free-form
reason: String on MigrationMessage::MigrationFailed so the
source can dispatch programmatically on the cause — specifically,
distinguish “retry this, the target is still booting” (NotReady)
from “give up, the target doesn’t know this daemon kind”
(FactoryNotFound).
See DAEMON_RUNTIME_READINESS_PLAN.md
for the retry-classification table.
Variants§
NotReady
Target runtime exists but hasn’t called start() yet — the
dispatcher received the migration before the runtime was
ready to accept one. Retriable: source should back off
- resend.
FactoryNotFound
Target has no factory registered for the daemon’s
origin_hash (supplied in the outer MigrationFailed
envelope). Terminal — retrying won’t help; the target
is mis-configured (wrong node), the kind is wrong, or the
daemon never registered.
ComputeNotSupported
Target doesn’t run a compute runtime at all (a bare Mesh
with no DaemonRuntime attached). Terminal — source
should pick a different target.
StateFailed(String)
Generic snapshot / restore / state-machine failure. Carries a human-readable detail. Terminal.
AlreadyMigrating
A migration is already in flight for the same origin. Terminal on the duplicate attempt — caller should not retry, and the currently-active migration should be allowed to run to completion.
IdentityTransportFailed(String)
Identity envelope failure: signature didn’t verify, seal open failed, etc. Terminal — tampering or misconfigured target X25519 key; retry won’t fix it.
NotReadyTimeout
Source gave up after exhausting its NotReady retry budget.
Terminal on both sides; carries the retry attempt count
for operator diagnosis.
Implementations§
Source§impl MigrationFailureReason
impl MigrationFailureReason
Sourcepub fn is_retriable(&self) -> bool
pub fn is_retriable(&self) -> bool
true iff the source should retry after a short backoff
when it sees this reason. Today only NotReady qualifies —
the others are terminal.
Trait Implementations§
Source§impl Clone for MigrationFailureReason
impl Clone for MigrationFailureReason
Source§fn clone(&self) -> MigrationFailureReason
fn clone(&self) -> MigrationFailureReason
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 MigrationFailureReason
impl Debug for MigrationFailureReason
Source§impl Display for MigrationFailureReason
impl Display for MigrationFailureReason
Source§impl PartialEq for MigrationFailureReason
impl PartialEq for MigrationFailureReason
Source§fn eq(&self, other: &MigrationFailureReason) -> bool
fn eq(&self, other: &MigrationFailureReason) -> bool
self and other values to be equal, and is used by ==.impl Eq for MigrationFailureReason
impl StructuralPartialEq for MigrationFailureReason
Auto Trait Implementations§
impl Freeze for MigrationFailureReason
impl RefUnwindSafe for MigrationFailureReason
impl Send for MigrationFailureReason
impl Sync for MigrationFailureReason
impl Unpin for MigrationFailureReason
impl UnsafeUnpin for MigrationFailureReason
impl UnwindSafe for MigrationFailureReason
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> 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§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
key and return true if they are equal.