`txpool api`: `remove_invalid` call improved (#6661)
#### Description Currently the transaction which is reported as invalid by a block builder (or `removed_invalid` by other components) is silently skipped. This PR improves this behavior. The transaction pool `report_invalid` function now accepts optional error associated with every reported transaction, and also the optional block hash which provides hints how reported transaction shall be handled. The following API change is proposed: https://github.com/paritytech/polkadot-sdk/blob/8be5ef3e/substrate/client/transaction-pool/api/src/lib.rs#L297-L318 Depending on error, the transaction pool can decide if transaction shall be removed from the view only or entirely from the pool. Invalid event will be dispatched if required. #### Notes for reviewers - Actual logic of removing invalid txs is implented in [`ViewStore::report_invalid`](https://github.com/paritytech/polkadot-sdk/blob/0fad26c4/substrate/client/transaction-pool/src/fork_aware_txpool/view_store.rs#L657-L680). Method's doc explains the flow. - This PR changes `HashMap` to `IndexMap` in revalidation logic. This is to preserve the original order of transactions (mainly for purposes of unit tests). - This PR solves the problem mentioned in: https://github.com/paritytech/polkadot-sdk/issues/5477#issuecomment-2598809344 (which can now be resolved). The invalid transactions found during mempool revalidation are now also removed from the `view_store`. No dangling invalid transaction shall be left in the pool. (https://github.com/paritytech/polkadot-sdk/pull/6661/commits/bfec2625) - The support for dropping invalid transactions reported from the views was also added. This should never happen, but if for any case all views will report invalid transcation (which previously was valid) the transaction will be dropped from the pool (https://github.com/paritytech/polkadot-sdk/pull/6661/commits/48214a38 ). fixes: #6008, #5477 --------- Co-authored-by: command-bot <> Co-authored-by:Sebastian Kunert <skunert49@gmail.com>
parent
60146ba5
Showing
- Cargo.lock 2 additions, 0 deletionsCargo.lock
- prdoc/pr_6661.prdoc 17 additions, 0 deletionsprdoc/pr_6661.prdoc
- substrate/bin/node/bench/Cargo.toml 1 addition, 0 deletionssubstrate/bin/node/bench/Cargo.toml
- substrate/bin/node/bench/src/construct.rs 6 additions, 2 deletionssubstrate/bin/node/bench/src/construct.rs
- substrate/client/basic-authorship/src/basic_authorship.rs 10 additions, 4 deletionssubstrate/client/basic-authorship/src/basic_authorship.rs
- substrate/client/rpc-spec-v2/src/transaction/tests/middleware_pool.rs 7 additions, 3 deletions...ient/rpc-spec-v2/src/transaction/tests/middleware_pool.rs
- substrate/client/rpc-spec-v2/src/transaction/transaction_broadcast.rs 1 addition, 1 deletion...ient/rpc-spec-v2/src/transaction/transaction_broadcast.rs
- substrate/client/rpc/src/author/mod.rs 7 additions, 9 deletionssubstrate/client/rpc/src/author/mod.rs
- substrate/client/transaction-pool/api/Cargo.toml 1 addition, 0 deletionssubstrate/client/transaction-pool/api/Cargo.toml
- substrate/client/transaction-pool/api/src/lib.rs 26 additions, 2 deletionssubstrate/client/transaction-pool/api/src/lib.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/dropped_watcher.rs 25 additions, 2 deletions...transaction-pool/src/fork_aware_txpool/dropped_watcher.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/fork_aware_txpool.rs 58 additions, 36 deletions...ansaction-pool/src/fork_aware_txpool/fork_aware_txpool.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/metrics.rs 15 additions, 1 deletion.../client/transaction-pool/src/fork_aware_txpool/metrics.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/multi_view_listener.rs 19 additions, 70 deletions...saction-pool/src/fork_aware_txpool/multi_view_listener.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/revalidation_worker.rs 14 additions, 8 deletions...saction-pool/src/fork_aware_txpool/revalidation_worker.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/tx_mem_pool.rs 54 additions, 26 deletions...ent/transaction-pool/src/fork_aware_txpool/tx_mem_pool.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/view.rs 14 additions, 8 deletions...ate/client/transaction-pool/src/fork_aware_txpool/view.rs
- substrate/client/transaction-pool/src/fork_aware_txpool/view_store.rs 78 additions, 8 deletions...ient/transaction-pool/src/fork_aware_txpool/view_store.rs
- substrate/client/transaction-pool/src/graph/listener.rs 4 additions, 1 deletionsubstrate/client/transaction-pool/src/graph/listener.rs
- substrate/client/transaction-pool/src/graph/pool.rs 1 addition, 2 deletionssubstrate/client/transaction-pool/src/graph/pool.rs
Please register or sign in to comment