diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index ee2fd4a199f2c..3170ee8528111 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -498,6 +498,7 @@ impl MaintainedTransactionPool for BasicPool let revalidation_strategy = self.revalidation_strategy.clone(); let revalidation_queue = self.revalidation_queue.clone(); let ready_poll = self.ready_poll.clone(); + let metrics = self.metrics.clone(); async move { // We keep track of everything we prune so that later we won't add @@ -528,6 +529,10 @@ impl MaintainedTransactionPool for BasicPool pruned_log.extend(prune_known_txs_for_block(id.clone(), &*api, &*pool).await); } + metrics.report( + |metrics| metrics.block_transactions_pruned.inc_by(pruned_log.len() as u64) + ); + if let (true, Some(tree_route)) = (next_action.resubmit, tree_route) { let mut resubmit_transactions = Vec::new(); @@ -547,10 +552,16 @@ impl MaintainedTransactionPool for BasicPool .into_iter() .filter(|tx| tx.is_signed().unwrap_or(true)); + let mut resubmitted_to_report = 0; + resubmit_transactions.extend( block_transactions.into_iter().filter(|tx| { let tx_hash = pool.hash_of(&tx); let contains = pruned_log.contains(&tx_hash); + + // need to count all transactions, not just filtered, here + resubmitted_to_report += 1; + if !contains { log::debug!( target: "txpool", @@ -562,6 +573,10 @@ impl MaintainedTransactionPool for BasicPool !contains }) ); + + metrics.report( + |metrics| metrics.block_transactions_resubmitted.inc_by(resubmitted_to_report) + ); } if let Err(e) = pool.submit_at( diff --git a/client/transaction-pool/src/metrics.rs b/client/transaction-pool/src/metrics.rs index e377b2fe8294c..d5a10dfd6f4bd 100644 --- a/client/transaction-pool/src/metrics.rs +++ b/client/transaction-pool/src/metrics.rs @@ -48,6 +48,8 @@ pub struct Metrics { pub validations_scheduled: Counter, pub validations_finished: Counter, pub validations_invalid: Counter, + pub block_transactions_pruned: Counter, + pub block_transactions_resubmitted: Counter, } impl Metrics { @@ -74,6 +76,20 @@ impl Metrics { )?, registry, )?, + block_transactions_pruned: register( + Counter::new( + "sub_txpool_block_transactions_pruned", + "Total number of transactions that was requested to be pruned by block events", + )?, + registry, + )?, + block_transactions_resubmitted: register( + Counter::new( + "sub_txpool_block_transactions_resubmitted", + "Total number of transactions that was requested to be resubmitted by block events", + )?, + registry, + )?, }) } }