Skip to main content

consortium/dag/
error.rs

1//! Error types for DAG execution.
2
3use crate::dag::types::TaskId;
4
5/// Errors from DAG construction and execution.
6#[derive(Debug, thiserror::Error)]
7pub enum DagError {
8    #[error("cycle detected in DAG involving task {0}")]
9    CycleDetected(TaskId),
10
11    #[error("unknown task referenced in dependency: {0}")]
12    UnknownTask(TaskId),
13
14    #[error("duplicate task ID: {0}")]
15    DuplicateTask(TaskId),
16
17    #[error("task failed: {0} — {1}")]
18    TaskFailed(TaskId, String),
19
20    #[error("DAG is empty — no tasks to execute")]
21    EmptyDag,
22
23    #[error("executor channel closed unexpectedly")]
24    ChannelClosed,
25
26    #[error("{0}")]
27    General(String),
28}
29
30pub type Result<T> = std::result::Result<T, DagError>;