apalis_workflow/dag/
error.rs1use apalis_core::error::BoxDynError;
2use petgraph::{algo::Cycle, graph::NodeIndex};
3use std::fmt::Debug;
4use thiserror::Error;
5
6#[derive(Error, Debug)]
8pub enum DagFlowError {
9 #[error("Node execution error: {0}")]
11 Node(#[source] BoxDynError),
12 #[error("Backend error: {0}")]
14 Backend(#[source] BoxDynError),
15
16 #[error("MissingService error: {0:?}")]
18 MissingService(petgraph::graph::NodeIndex),
19
20 #[error("Service error: {0}")]
22 Service(#[source] BoxDynError),
23
24 #[error("Codec error: {0}")]
26 Codec(#[source] BoxDynError),
27
28 #[error("Metadata error: {0}")]
30 Metadata(#[source] BoxDynError),
31
32 #[error("Dependencies not ready")]
34 DependenciesNotReady,
35
36 #[error("Missing task ID for dependency node {0:?}")]
38 MissingDependencyTaskId(petgraph::graph::NodeIndex),
39
40 #[error("Task result not found for node {0:?}")]
42 TaskResultNotFound(petgraph::graph::NodeIndex),
43
44 #[error("Dependency task failed: {0}")]
46 DependencyTaskFailed(String),
47
48 #[error("Unexpected response type during fan-in")]
50 UnexpectedResponseType,
51
52 #[error("Input count mismatch: expected {expected} inputs for fan-in, got {actual}")]
54 InputCountMismatch {
55 expected: usize,
57 actual: usize,
59 },
60 #[error("Entry fan-out not completed")]
62 EntryFanOutIncomplete,
63
64 #[error("DAG contains cycles involving nodes: {0:?}")]
66 CyclicDAG(Cycle<NodeIndex>),
67}