pub enum RelayError {
Chain {
device_id: String,
detail: String,
},
Fork {
device_id: String,
seq: u64,
},
Gap {
device_id: String,
expected: u64,
found: u64,
},
ForeignOps {
device_id: String,
op_device: String,
},
FrontierTruncated {
device_id: String,
dropped_below: u64,
},
Checkpoint(CheckpointError),
CheckpointFrontierUnverified {
device_id: String,
seq: u64,
detail: String,
},
Io(Error),
}Expand description
A relay operation failure.
Variants§
Chain
A pushed op fails self-verification (id/device mismatch) or does not link the relay-held chain head.
Fork
A different op claims a seq the relay already holds — the
permanent chain fork, refused at the transport.
Gap
A pushed op skips ahead of the relay-held chain (ops must arrive contiguously).
ForeignOps
A device may only push its own chain.
FrontierTruncated
The pull’s since frontier reaches into GC’d space — the puller
cannot be served a gapless log and must cold-bootstrap from the
latest checkpoint (checkpoint_get + pull(since = checkpoint frontier) + resume_anchored).
Checkpoint(CheckpointError)
The uploaded checkpoint does not verify.
CheckpointFrontierUnverified
The uploaded checkpoint is internally self-consistent
(Checkpoint::verify passed) but its frontier claims a chain
position that does not match the relay-held chain for a device —
a checkpoint built from a different chain merely claiming the
device’s name (a restored-from-backup re-mint, or two accounts
colliding on a device id in a shared FsRelay folder). Rejected so
it can never become GC coverage evidence and drop the device’s real
ops. (op_id/seq/prev stay cleartext metadata under B6 E2E, so
this cross-check survives encryption.)
Io(Error)
Trait Implementations§
Source§impl Debug for RelayError
impl Debug for RelayError
Source§impl Display for RelayError
impl Display for RelayError
Source§impl Error for RelayError
impl Error for RelayError
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()