pub struct MigrationHandle {
pub origin_hash: u64,
pub source_node: u64,
pub target_node: u64,
/* private fields */
}Expand description
Handle to an in-flight migration. Drop the handle and the orchestrator continues driving the migration to completion in the background; keep it to observe phase transitions or request abort.
Cheap to clone — the backing state is shared with the
DaemonRuntime that produced it.
Fields§
§origin_hash: u64Daemon being migrated.
source_node: u64Source node that currently hosts the daemon.
target_node: u64Target node that will host the daemon after cutover.
Implementations§
Source§impl MigrationHandle
impl MigrationHandle
Sourcepub fn phase(&self) -> Option<MigrationPhase>
pub fn phase(&self) -> Option<MigrationPhase>
Current migration phase, or None once the migration has
left the orchestrator’s records (either via Complete → auto
cleanup, or via explicit abort). Callers distinguish the two
by remembering the last non-None phase.
Sourcepub async fn wait(self) -> Result<(), DaemonError>
pub async fn wait(self) -> Result<(), DaemonError>
Block until the migration reaches a terminal state.
Returns Ok(()) on normal completion (saw Complete, then
the orchestrator cleaned up). Returns Err(MigrationError)
if the orchestrator’s record disappeared without the caller
ever having seen Complete — either an explicit abort or a
failure at some upstream stage.
This method does not enforce any wall-clock timeout. A
migration that stalls waiting on an unresponsive peer will
block indefinitely; callers that want a bound should use
Self::wait_with_timeout instead.
Polls every 50 ms. The implementation is deliberately
simple — Stage 2 of DAEMON_IDENTITY_MIGRATION_PLAN.md and
the V2 iteration of this plan will swap this for a
broadcast-channel push, but 50 ms polling is plenty for the
use cases a migration API sees today.
Sourcepub async fn wait_with_timeout(
self,
timeout: Duration,
) -> Result<(), DaemonError>
pub async fn wait_with_timeout( self, timeout: Duration, ) -> Result<(), DaemonError>
Like Self::wait with a caller-controlled timeout. A
timeout aborts the orchestrator-side record and returns
Err(MigrationError::StateFailed); a graceful Complete
returns Ok.
Sourcepub async fn cancel(&self) -> Result<(), DaemonError>
pub async fn cancel(&self) -> Result<(), DaemonError>
Request abort. The orchestrator emits a MigrationFailed
message to involved nodes and clears its record; the target
rolls back via its own handler. Best-effort — a migration
past Cutover cannot be undone cleanly because routing has
already flipped.
Trait Implementations§
Source§impl Clone for MigrationHandle
impl Clone for MigrationHandle
Source§fn clone(&self) -> MigrationHandle
fn clone(&self) -> MigrationHandle
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more