pub enum DurabilityError {
Store(StoreError),
NonDeterminism(NonDeterminismError),
HistoryShape {
reason: String,
},
SearchAttribute(SearchAttributeError),
EngineTaskEpochClosed {
reason: String,
},
RunSuperseded {
workflow_id: WorkflowId,
run_id: RunId,
},
}Expand description
Errors returned by durability recording, replay, and recovery operations.
Variants§
Store(StoreError)
The backing event store rejected or failed a durability operation.
NonDeterminism(NonDeterminismError)
Replay detected that workflow code no longer matches recorded history.
HistoryShape
Recorded history is malformed or internally inconsistent.
SearchAttribute(SearchAttributeError)
A search attribute update did not satisfy the registered schema.
EngineTaskEpochClosed
A durable write was refused because this engine’s task epoch has closed.
🔴 DELIBERATELY NOT crate::EngineError::EngineTaskEpochClosed. That
variant carries a documented single-construction-site invariant —
aion-client’s map_engine_error gives it no arm on the stated ground
that it is unreachable through any transport-exposed operation — and a
second construction site would silently take that transport’s catch-all.
This is a different layer with a different audience: it surfaces as
{error, _} inside running workflow code, never over the wire.
RunSuperseded
A durable write was refused because it was offered on behalf of a run whose generation the history has already moved past (aion#213).
Continue-as-new does not stop the predecessor’s process at the instant
its terminal lands — the API path never touches the pid, and the NIF
path’s cancel_pid follows the append — so a run that is durably over
can still reach its recorder with work it had already begun. Sequencing
that append would put a TimerStarted (or an activity record, or a
signal) for a dead run inside the SUCCESSOR’s segment, where replay
reads it as the successor’s own. Nothing is appended, and the run this
names is over: the refusal is the correct outcome, not a fault to
retry.
Fields
workflow_id: WorkflowIdWorkflow whose history the append was offered into.
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
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()