pub enum OrgRevocationError {
InvalidBundle(OrgError),
MissingState {
path: String,
},
CorruptState {
path: String,
detail: String,
},
UnsupportedVersion {
path: String,
found: u32,
},
Io {
path: String,
reason: String,
},
DurabilityUncertain {
path: String,
reason: String,
},
Poisoned {
path: String,
},
NonMonotonicReplacement {
path: String,
},
BackingIdentityConflict {
path: String,
},
}Expand description
Errors from the persisted revocation store.
Variants§
InvalidBundle(OrgError)
The incoming bundle failed signature or structural verification. Persisted last-good state is retained.
MissingState
No persisted maxima file at startup. Absence is silently
weaker floors, so startup must not proceed; only
net node adopt creates the file.
CorruptState
The persisted maxima file exists but cannot be trusted (parse failure, duplicate keys). LOUD startup failure.
UnsupportedVersion
The persisted file’s format version is unknown to this build.
Io
Filesystem failure while reading or durably writing. When
raised from apply_bundle this is always PRE-rename: the
old file and old live view are both intact.
DurabilityUncertain
The rename LANDED but the parent-directory fsync failed — the directory entry may or may not survive a crash, so disk and memory can no longer be proven synchronized. The store publishes the merged (never-weaker) live view, then poisons the BACKING PATH: same-path operations are refused until recovery — a locked reread republished through the shared core plus a SUCCESSFUL parent-directory fsync — re-establishes ground truth (review-8 §13, review-9). A restart is one route to that recovery, not the contract.
Poisoned
A previous apply ended post-rename durability-uncertain
(see Self::DurabilityUncertain) and recovery has not yet
succeeded; same-path reloads and opens are refused until a
locked reread plus a successful parent-directory fsync
clears the uncertainty.
NonMonotonicReplacement
A running node refused to swap its installed revocation
store for one whose live view is lower on some (org, member) key — an installed floor never lowers (review-8
§4). Reload higher floors through
OrgRevocationStore::apply_bundle instead of replacing
the store.
BackingIdentityConflict
R2-4: this backing path is already bound, for the lifetime of a
live core, to a DIFFERENT .lock sidecar identity than the one
just opened — the sidecar was recreated or replaced underneath a
core that same-path siblings still hold. Joining under the new
identity would fork the path into two independent security views,
so it is refused loudly.
Trait Implementations§
Source§impl Debug for OrgRevocationError
impl Debug for OrgRevocationError
Source§impl Display for OrgRevocationError
impl Display for OrgRevocationError
Source§impl Error for OrgRevocationError
impl Error for OrgRevocationError
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()