polkadot_collator_protocol/validator_side_experimental/
error.rs1use crate::LOG_TARGET;
18use fatality::Nested;
19use polkadot_node_subsystem::{ChainApiError, SubsystemError};
20use polkadot_node_subsystem_util::runtime;
21use polkadot_primitives::Hash;
22
23pub type Result<T> = std::result::Result<T, Error>;
24pub type FatalResult<T> = std::result::Result<T, FatalError>;
25
26#[fatality::fatality(splitable)]
27pub enum Error {
28 #[fatal]
29 #[error("Oneshot for receiving ancestors from chain API got cancelled")]
30 CanceledAncestors,
31 #[fatal]
32 #[error("Oneshot for receiving finalized block number from chain API got cancelled")]
33 CanceledFinalizedBlockNumber,
34 #[fatal]
35 #[error("Oneshot for receiving finalized block hash from chain API got cancelled")]
36 CanceledFinalizedBlockHash,
37 #[error("Finalized block hash for {0} not found")]
38 FinalizedBlockNotFound(u32),
39 #[error(transparent)]
40 ChainApi(#[from] ChainApiError),
41 #[fatal(forward)]
42 #[error("Error while accessing runtime information {0}")]
43 Runtime(#[from] runtime::Error),
44 #[fatal]
45 #[error("Receiving message from overseer failed: {0}")]
46 SubsystemReceive(#[source] SubsystemError),
47}
48
49pub fn log_error(result: Result<()>) -> FatalResult<()> {
54 match result.into_nested()? {
55 Ok(()) => Ok(()),
56 Err(jfyi) => {
57 jfyi.log();
58 Ok(())
59 },
60 }
61}
62
63impl JfyiError {
64 pub fn log(self) {
66 gum::warn!(target: LOG_TARGET, error = ?self);
67 }
68}