kona_engine/task_queue/tasks/insert/
error.rs1use crate::{
6 EngineTaskError, SynchronizeTaskError, task_queue::tasks::task::EngineTaskErrorSeverity,
7};
8use alloy_rpc_types_engine::PayloadStatusEnum;
9use alloy_transport::{RpcError, TransportErrorKind};
10use kona_protocol::FromBlockError;
11use op_alloy_rpc_types_engine::OpPayloadError;
12
13#[derive(Debug, thiserror::Error)]
17pub enum InsertTaskError {
18 #[error(transparent)]
20 FromBlockError(#[from] OpPayloadError),
21 #[error("Failed to insert new payload: {0}")]
23 InsertFailed(RpcError<TransportErrorKind>),
24 #[error("Unexpected payload status: {0}")]
26 UnexpectedPayloadStatus(PayloadStatusEnum),
27 #[error("Inconsistent forkchoice state; Pipeline reset required")]
29 InconsistentForkchoiceState,
30 #[error(transparent)]
32 L2BlockInfoConstruction(#[from] FromBlockError),
33 #[error(transparent)]
35 ForkchoiceUpdateFailed(#[from] SynchronizeTaskError),
36}
37
38impl EngineTaskError for InsertTaskError {
39 fn severity(&self) -> EngineTaskErrorSeverity {
40 match self {
41 Self::FromBlockError(_) => EngineTaskErrorSeverity::Critical,
42 Self::InsertFailed(_) => EngineTaskErrorSeverity::Temporary,
43 Self::UnexpectedPayloadStatus(_) => EngineTaskErrorSeverity::Critical,
44 Self::L2BlockInfoConstruction(_) => EngineTaskErrorSeverity::Critical,
45 Self::InconsistentForkchoiceState => EngineTaskErrorSeverity::Reset,
46 Self::ForkchoiceUpdateFailed(inner) => inner.severity(),
47 }
48 }
49}