From a5ced84098497d800a4ba129aaac23dbe5adff3c Mon Sep 17 00:00:00 2001 From: Minhyuk Kim Date: Wed, 11 Feb 2026 21:58:29 +0900 Subject: [PATCH] feat(node/builder): add `build_with_ordering_and_spawn_maintenance_task` to `TxPoolBuilder` (#21979) --- crates/node/builder/src/components/pool.rs | 32 ++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/crates/node/builder/src/components/pool.rs b/crates/node/builder/src/components/pool.rs index 243bda0738..eb9568f5ff 100644 --- a/crates/node/builder/src/components/pool.rs +++ b/crates/node/builder/src/components/pool.rs @@ -7,7 +7,8 @@ use reth_chainspec::EthereumHardforks; use reth_node_api::{BlockTy, NodeTypes, TxTy}; use reth_transaction_pool::{ blobstore::DiskFileBlobStore, BlobStore, CoinbaseTipOrdering, PoolConfig, PoolTransaction, - SubPoolLimit, TransactionPool, TransactionValidationTaskExecutor, TransactionValidator, + SubPoolLimit, TransactionOrdering, TransactionPool, TransactionValidationTaskExecutor, + TransactionValidator, }; use std::future::Future; @@ -174,10 +175,31 @@ where where BS: BlobStore, { - let ctx = self.ctx; - let transaction_pool = self.build(blob_store, pool_config); - // Spawn maintenance tasks using standalone functions - spawn_maintenance_tasks(ctx, transaction_pool.clone(), transaction_pool.config())?; + self.build_with_ordering_and_spawn_maintenance_task( + CoinbaseTipOrdering::default(), + blob_store, + pool_config, + ) + } + + /// Build the transaction pool with a custom [`TransactionOrdering`] and spawn its maintenance + /// tasks. + pub fn build_with_ordering_and_spawn_maintenance_task( + self, + ordering: O, + blob_store: BS, + pool_config: PoolConfig, + ) -> eyre::Result, O, BS>> + where + BS: BlobStore, + O: TransactionOrdering, + { + let TxPoolBuilder { ctx, validator, .. } = self; + + let transaction_pool = + reth_transaction_pool::Pool::new(validator, ordering, blob_store, pool_config.clone()); + + spawn_maintenance_tasks(ctx, transaction_pool.clone(), &pool_config)?; Ok(transaction_pool) }