pub enum StoreError {
PreconditionFailed(String),
Conflict(String),
NotFound(String),
NoSuchUpload(String),
ChecksumMismatch(String),
Auth(String),
Other(String),
}Variants§
PreconditionFailed(String)
412 — the guarded condition failed. Route to arbitration, never to an operator runbook (A6).
Conflict(String)
409 — a concurrent conditional writer; retry-after-arbitrate.
NotFound(String)
NoSuchUpload(String)
The assembly was fenced (aborted) under us — A8’s takeover sweep produces exactly this at a deposed hub’s Complete.
ChecksumMismatch(String)
Server-side content validation failed — the store computed a different full-object checksum than local truth claims.
Auth(String)
401/403, or an S3 code that means the same thing: the request was well-formed and we are not allowed to make it.
Split out of Other because the caller’s response is different
in kind. A transient 5xx or a connection reset is “the store is
having a moment, keep trying”; this is “the credentials are
wrong, expired, or the policy changed”, and no amount of retrying
fixes it. It reached the epoch heartbeat as an ordinary renew
failure, so a rotated key produced a fence and an exit whose log
line talked about lease windows — pointing an operator at the
bucket, at contention, at anything but the credential that had
actually expired.
RequestTimeTooSkewed belongs here too: S3 answers 403, and the
cause is the node’s clock rather than the key, which is
diagnosable only if the error says so.
Other(String)
Trait Implementations§
Source§impl Debug for StoreError
impl Debug for StoreError
Source§impl Display for StoreError
impl Display for StoreError
Source§impl Error for StoreError
impl Error for StoreError
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()