From 1c232ff5eaf2377376486b15d15fcc80a5622144 Mon Sep 17 00:00:00 2001 From: Marek Date: Wed, 25 Aug 2021 20:39:27 +0200 Subject: [PATCH] Enumerate mempool errors (#2615) * Enumerate mempool errors. * Update code formatting * Allow dead code Co-authored-by: Alfredo Garcia * Allow dead code Co-authored-by: Alfredo Garcia * Add a new error * Update error formatting Co-authored-by: Alfredo Garcia * Remove TransactionQueryError * Derive Copy and Clone Co-authored-by: teor * Remove the Copy trait Co-authored-by: teor * Rename enum variants Co-authored-by: Alfredo Garcia Co-authored-by: teor Co-authored-by: Deirdre Connolly --- zebrad/src/components/mempool.rs | 3 +++ zebrad/src/components/mempool/error.rs | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 zebrad/src/components/mempool/error.rs diff --git a/zebrad/src/components/mempool.rs b/zebrad/src/components/mempool.rs index 0c38da71..1ec888e5 100644 --- a/zebrad/src/components/mempool.rs +++ b/zebrad/src/components/mempool.rs @@ -1,5 +1,8 @@ //! Zebra mempool. +/// Mempool-related errors. +pub mod error; + mod crawler; pub use self::crawler::Crawler; diff --git a/zebrad/src/components/mempool/error.rs b/zebrad/src/components/mempool/error.rs new file mode 100644 index 00000000..f3a47406 --- /dev/null +++ b/zebrad/src/components/mempool/error.rs @@ -0,0 +1,25 @@ +//! Errors that can occur when manipulating transactions in the mempool. + +use thiserror::Error; + +#[derive(Error, Clone, Debug, PartialEq)] +#[allow(dead_code)] +pub enum MempoolError { + #[error("transaction already exists in mempool")] + InMempool, + + #[error("transaction did not pass consensus validation")] + Invalid(#[from] zebra_consensus::error::TransactionError), + + #[error("transaction is committed in block {0:?}")] + InBlock(zebra_chain::block::Hash), + + #[error("transaction has expired")] + Expired, + + #[error("transaction fee is too low for the current mempool state")] + LowFee, + + #[error("transaction was not found in mempool")] + NotInMempool, +}