From db662755da4dd42e7e46ed3045834f9a22a1290c Mon Sep 17 00:00:00 2001 From: yukang Date: Thu, 1 Aug 2024 10:37:44 +0800 Subject: [PATCH] cleanup and add assertion for process_rbf --- tx-pool/src/process.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tx-pool/src/process.rs b/tx-pool/src/process.rs index 8ca1bdab77..58460e4330 100644 --- a/tx-pool/src/process.rs +++ b/tx-pool/src/process.rs @@ -206,25 +206,26 @@ impl TxPoolService { ) -> Vec { let mut may_recovered_txs = vec![]; let mut available_inputs = HashSet::new(); - let mut all_removed = vec![]; if conflicts.is_empty() { return may_recovered_txs; } - for id in conflicts.iter() { - all_removed.extend(tx_pool.pool_map.remove_entry_and_descendants(id)); - } + let all_removed: Vec<_> = conflicts + .iter() + .flat_map(|id| tx_pool.pool_map.remove_entry_and_descendants(id)) + .collect(); - for removed in all_removed.iter() { - available_inputs.extend(removed.transaction().input_pts_iter()); - } + available_inputs.extend( + all_removed + .iter() + .flat_map(|removed| removed.transaction().input_pts_iter()), + ); - if !available_inputs.is_empty() { - for input in entry.transaction().input_pts_iter() { - available_inputs.remove(&input); - } + for input in entry.transaction().input_pts_iter() { + available_inputs.remove(&input); } + may_recovered_txs = tx_pool.get_conflicted_txs_from_inputs(available_inputs.into_iter()); for old in all_removed { debug!( @@ -240,6 +241,7 @@ impl TxPoolService { // after removing old tx from tx_pool, we call reject callbacks manually self.callbacks.call_reject(tx_pool, &old, reject); } + assert!(!may_recovered_txs.contains(entry.transaction())); may_recovered_txs }