pub enum DurabilityError {
StoreError(ApiError),
SequenceConflict {
expected: u64,
actual: u64,
},
CursorRegression {
stored: u64,
attempted: u64,
},
DedupCollision {
key: String,
},
ConfigError(String),
EnvelopeError(String),
}Expand description
Error taxonomy for haematite-backed durability operations.
Variants§
StoreError(ApiError)
Haematite returned a store-level failure.
The umbrella From<haematite::ApiError> conversion lives in
super::store because it routes the optimistic-concurrency variants to
their dedicated cases rather than wrapping them here.
SequenceConflict
An append observed a different stream sequence than the caller expected.
Fields
CursorRegression
A cursor checkpoint attempted to move from a stale stored value.
Fields
DedupCollision
A producer idempotency key collided with an existing dedup entry.
ConfigError(String)
Durability configuration failed validation.
EnvelopeError(String)
Persisted envelope bytes could not be encoded or decoded.
Trait Implementations§
Source§impl Debug for DurabilityError
impl Debug for DurabilityError
Source§impl Display for DurabilityError
impl Display for DurabilityError
Source§impl Error for DurabilityError
impl Error for DurabilityError
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()
Source§impl From<ApiError> for DurabilityError
Maps a real-engine ApiError onto liminal’s DurabilityError.
impl From<ApiError> for DurabilityError
Maps a real-engine ApiError onto liminal’s DurabilityError.
The optimistic-concurrency variants route to their dedicated DurabilityError
cases (SequenceConflict, CursorRegression); everything else is a
store-level failure carried verbatim.