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 NodeExecutionError(#[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(#[from] DagServiceError),
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}
68
69#[derive(Error, Debug)]
71pub enum DagServiceError {
72 #[error("DAG encountered a poll error in a service: {0:?}")]
74 PollError(#[source] BoxDynError),
75 #[error("Missing previous node")]
77 MissingPreviousNode,
78 #[error("Missing Fanin Handler")]
80 MissingFaninHandler,
81 #[error("Missing next node")]
83 MissingNextNode,
84 #[error("Missing TaskId for incoming node")]
86 MissingIncomingTaskId,
87 #[error("Missing result for TaskId {0}")]
89 MissingTaskIdResult(String),
90 #[error("Fan-in dependency task returned invalid response")]
92 InvalidFanInDependencyResult,
93
94 #[error("Dependency task failed: {0:?}")]
96 DependencyTaskFailed(#[source] BoxDynError),
97}