pub enum DurabilityError {
Show 17 variants
EmptyOperationBatch,
BatchUnsupported {
store: &'static str,
},
AppendUnresolved {
stream_key: String,
sequence: u64,
cause: String,
},
PendingAppendUnreadable {
stream_key: String,
sequence: u64,
append_error: String,
read_error: String,
},
OutcomeUnknown {
pid: u64,
},
NotStarted {
pid: u64,
},
StoreError(ApiError),
SequenceConflict {
expected: u64,
actual: u64,
},
CursorRegression {
stored: u64,
attempted: u64,
},
DedupCollision {
key: String,
},
ConfigError(String),
EphemeralStoreOpen(String),
EphemeralStoreDetached,
TruncateUnsupported {
store: &'static str,
stream_key: String,
before_seq: u64,
},
RoutedScanUnsupported {
store: &'static str,
route_key: String,
},
RoutedRemoveUnsupported {
store: &'static str,
route_key: String,
},
EnvelopeError(String),
}Expand description
Error taxonomy for haematite-backed durability operations.
Variants§
EmptyOperationBatch
A logical operation has no staged rows to commit.
BatchUnsupported
A store does not implement atomic routed storage.
AppendUnresolved
The store did not establish whether a sent append committed.
Fields
PendingAppendUnreadable
The authoritative read of an earlier uncertain append failed.
Fields
OutcomeUnknown
A write the store had started when its caller stopped waiting: it may
have been applied. It is never treated as not written: the caller
reads the position back to settle it (settle), or refuses by this
name.
NotStarted
A write withdrawn before the store started it: nothing was written, and it may be sent again.
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.
EphemeralStoreOpen(String)
An ephemeral durable store could not be opened on disk.
Raised only on the construction path of a self-owned ephemeral store
(see super::EphemeralRoot::open_store); the guarding temporary directory
is already removed by the time this surfaces.
EphemeralStoreDetached
An operation reached an ephemeral store whose backing database was already detached by teardown.
Unreachable by construction: the store is detached only inside the
ephemeral guard’s Drop, which cannot overlap a live handle’s call.
The variant exists because that detachment is expressed through an
Option the compiler cannot see through, and the fallback must be a
typed refusal rather than a panic.
TruncateUnsupported
A store that cannot delete entries was asked to truncate a stream.
Fields
RoutedScanUnsupported
A store that cannot list a routed key window was asked to scan one.
RoutedRemoveUnsupported
A store that cannot delete a routed key window in one commit was asked to remove routed rows.
Composing the window from single deletes is never done in its place (DUR-018 R3): each would be its own commit.
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<Api> for DurabilityError
Maps a real-engine ApiError onto liminal’s DurabilityError.
impl From<Api> 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.