Enum RindleError
pub enum RindleError {
Sqlite {
op: &'static str,
source: String,
},
UnsupportedValue(String),
InvalidUtf8 {
value_type: &'static str,
source: Utf8Error,
},
Storage(String),
ConsistencyViolation {
kind: &'static str,
},
SchemaViolation(String),
PushDeadlineExceeded {
site: &'static str,
},
DeltaOverflow {
max_bytes: usize,
used: usize,
},
}Variants§
Sqlite
A SQLite backend operation failed. The underlying error is stringified at
the construction boundary (see RindleError::sqlite) so the core crate
carries no rusqlite dependency — the SQLite backend lives in rindle-sqlite.
UnsupportedValue(String)
InvalidUtf8
Storage(String)
ConsistencyViolation
A malformed change stream relative to current state: an ADD of an existing
row, a REMOVE/EDIT of an absent row, or an EDIT that mutates a join key.
Surfaced when strict change validation is enabled (WS02.2) — and
unconditionally by the SQLite batch-delta fold for a duplicate ADD, where the
replaced write-then-abort path raised the UNIQUE-constraint error in every
build; elsewhere these are debug_assert!-checked internal invariants.
SchemaViolation(String)
An ingested row does not match its schema (wrong width, etc.) — rejected at the source boundary before it can reach the engine’s unchecked column index (WS02.4).
PushDeadlineExceeded
A push blew the host-armed wall-clock deadline (FOLLOWER-LAG-SHED §6.6 — the
runaway-push bail): a fan-out checkpoint (site names the loop) parked this and
stopped iterating. Operator state is torn and must be discarded — the host’s
derive-fault path (teardown + rehydrate) is the defined recovery, exactly as for
a panic. Never raised unless the host armed Graph::set_push_deadline.
DeltaOverflow
A batch delta hit its memory budget (design 306 D4): one transaction’s folded rows would cost more than the derivation may hold, so the batch cannot be derived incrementally. This is a load-shed signal, not a data error — the captured writes are valid; only the derivation gave up. The defined recovery is the shed path (commit the data, tear down the affected pipelines, re-hydrate from the committed state), never failing the write.
max_bytes is the budget that was exceeded, used the delta’s own estimate at
the moment it tripped (>= max_bytes; the overshoot is one row). The estimate is
documented at rindle_sqlite::DeltaBudget — an accounted upper bound on the
delta’s heap, not a measurement of the process.
Implementations§
§impl RindleError
impl RindleError
pub fn sqlite(op: &'static str, source: impl Display) -> RindleError
pub fn sqlite(op: &'static str, source: impl Display) -> RindleError
Construct a RindleError::Sqlite from any displayable backend error. The
source is stringified here so callers in rindle-sqlite can pass a
rusqlite::Error without the core crate depending on rusqlite.
pub fn unsupported_value(message: impl Into<String>) -> RindleError
pub fn schema_violation(message: impl Into<String>) -> RindleError
Trait Implementations§
§impl Debug for RindleError
impl Debug for RindleError
§impl Display for RindleError
impl Display for RindleError
§impl Error for RindleError
impl Error for RindleError
§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()