From c38a425207f36a213df600e1dfa4269b17a84619 Mon Sep 17 00:00:00 2001 From: Arsenii Kulikov Date: Thu, 12 Sep 2024 14:48:25 +0400 Subject: [PATCH] chore: remove `prune_modes` arg from `BlockchainTree::new` (#10857) --- Cargo.lock | 1 - .../src/commands/debug_cmd/build_block.rs | 7 +---- .../src/commands/debug_cmd/replay_engine.rs | 6 +--- crates/blockchain-tree/Cargo.toml | 1 - crates/blockchain-tree/src/blockchain_tree.rs | 30 ++++++------------- .../consensus/beacon/src/engine/test_utils.rs | 8 ++--- crates/node/builder/src/launch/common.rs | 4 +-- 7 files changed, 15 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fceb2c06a..90332eb7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6360,7 +6360,6 @@ dependencies = [ "reth-node-types", "reth-primitives", "reth-provider", - "reth-prune-types", "reth-revm", "reth-stages-api", "reth-storage-errors", diff --git a/bin/reth/src/commands/debug_cmd/build_block.rs b/bin/reth/src/commands/debug_cmd/build_block.rs index d4d9ee60a..09a9ae54b 100644 --- a/bin/reth/src/commands/debug_cmd/build_block.rs +++ b/bin/reth/src/commands/debug_cmd/build_block.rs @@ -30,7 +30,6 @@ use reth_provider::{ providers::BlockchainProvider, BlockHashReader, BlockReader, BlockWriter, ChainSpecProvider, ProviderFactory, StageCheckpointReader, StateProviderFactory, }; -use reth_prune::PruneModes; use reth_revm::{database::StateProviderDatabase, primitives::EnvKzgSettings}; use reth_rpc_types::engine::{BlobsBundleV1, PayloadAttributes}; use reth_stages::StageId; @@ -131,11 +130,7 @@ impl> Command { // configure blockchain tree let tree_externals = TreeExternals::new(provider_factory.clone(), Arc::clone(&consensus), executor); - let tree = BlockchainTree::new( - tree_externals, - BlockchainTreeConfig::default(), - PruneModes::none(), - )?; + let tree = BlockchainTree::new(tree_externals, BlockchainTreeConfig::default())?; let blockchain_tree = Arc::new(ShareableBlockchainTree::new(tree)); // fetch the best block from the database diff --git a/bin/reth/src/commands/debug_cmd/replay_engine.rs b/bin/reth/src/commands/debug_cmd/replay_engine.rs index d26d36a41..e6a7663a2 100644 --- a/bin/reth/src/commands/debug_cmd/replay_engine.rs +++ b/bin/reth/src/commands/debug_cmd/replay_engine.rs @@ -93,11 +93,7 @@ impl> Command { // Configure blockchain tree let tree_externals = TreeExternals::new(provider_factory.clone(), Arc::clone(&consensus), executor); - let tree = BlockchainTree::new( - tree_externals, - BlockchainTreeConfig::default(), - PruneModes::none(), - )?; + let tree = BlockchainTree::new(tree_externals, BlockchainTreeConfig::default())?; let blockchain_tree = Arc::new(ShareableBlockchainTree::new(tree)); // Set up the blockchain provider diff --git a/crates/blockchain-tree/Cargo.toml b/crates/blockchain-tree/Cargo.toml index 7d5f36008..6cf22f1c8 100644 --- a/crates/blockchain-tree/Cargo.toml +++ b/crates/blockchain-tree/Cargo.toml @@ -22,7 +22,6 @@ reth-evm.workspace = true reth-revm.workspace = true reth-provider.workspace = true reth-execution-types.workspace = true -reth-prune-types.workspace = true reth-stages-api.workspace = true reth-trie = { workspace = true, features = ["metrics"] } reth-trie-db = { workspace = true, features = ["metrics"] } diff --git a/crates/blockchain-tree/src/blockchain_tree.rs b/crates/blockchain-tree/src/blockchain_tree.rs index 23896ac50..0468d662e 100644 --- a/crates/blockchain-tree/src/blockchain_tree.rs +++ b/crates/blockchain-tree/src/blockchain_tree.rs @@ -25,7 +25,6 @@ use reth_provider::{ ChainSpecProvider, ChainSplit, ChainSplitTarget, DisplayBlocksChain, HeaderProvider, ProviderError, StaticFileProviderFactory, }; -use reth_prune_types::PruneModes; use reth_stages_api::{MetricEvent, MetricEventsSender}; use reth_storage_errors::provider::{ProviderResult, RootMismatch}; use reth_trie::{hashed_cursor::HashedPostStateCursorFactory, StateRoot}; @@ -117,9 +116,8 @@ where /// storage space efficiently. It's important to validate this configuration to ensure it does /// not lead to unintended data loss. pub fn new( - mut externals: TreeExternals, + externals: TreeExternals, config: BlockchainTreeConfig, - prune_modes: PruneModes, ) -> ProviderResult { let max_reorg_depth = config.max_reorg_depth() as usize; // The size of the broadcast is twice the maximum reorg depth, because at maximum reorg @@ -127,9 +125,6 @@ where let (canon_state_notification_sender, _receiver) = tokio::sync::broadcast::channel(max_reorg_depth * 2); - // Set the prune modes argument, on the provider - externals.provider_factory = externals.provider_factory.with_prune_modes(prune_modes); - let last_canonical_hashes = externals.fetch_latest_canonical_hashes(config.num_of_canonical_hashes() as usize)?; @@ -1653,7 +1648,6 @@ mod tests { let mut tree = BlockchainTree::new( TreeExternals::new(provider_factory, consensus, executor_provider), BlockchainTreeConfig::default(), - PruneModes::default(), ) .expect("failed to create tree"); @@ -1733,8 +1727,7 @@ mod tests { // make tree let config = BlockchainTreeConfig::new(1, 2, 3, 2); - let mut tree = BlockchainTree::new(externals, config, PruneModes::default()) - .expect("failed to create tree"); + let mut tree = BlockchainTree::new(externals, config).expect("failed to create tree"); // genesis block 10 is already canonical tree.make_canonical(B256::ZERO).unwrap(); @@ -1809,8 +1802,7 @@ mod tests { // make tree let config = BlockchainTreeConfig::new(1, 2, 3, 2); - let mut tree = BlockchainTree::new(externals, config, PruneModes::default()) - .expect("failed to create tree"); + let mut tree = BlockchainTree::new(externals, config).expect("failed to create tree"); // genesis block 10 is already canonical tree.make_canonical(B256::ZERO).unwrap(); @@ -1895,8 +1887,7 @@ mod tests { // make tree let config = BlockchainTreeConfig::new(1, 2, 3, 2); - let mut tree = BlockchainTree::new(externals, config, PruneModes::default()) - .expect("failed to create tree"); + let mut tree = BlockchainTree::new(externals, config).expect("failed to create tree"); // genesis block 10 is already canonical tree.make_canonical(B256::ZERO).unwrap(); @@ -1994,8 +1985,7 @@ mod tests { // make tree let config = BlockchainTreeConfig::new(1, 2, 3, 2); - let mut tree = BlockchainTree::new(externals, config, PruneModes::default()) - .expect("failed to create tree"); + let mut tree = BlockchainTree::new(externals, config).expect("failed to create tree"); let mut canon_notif = tree.subscribe_canon_state(); // genesis block 10 is already canonical @@ -2388,8 +2378,7 @@ mod tests { // make tree let config = BlockchainTreeConfig::new(1, 2, 3, 2); - let mut tree = BlockchainTree::new(externals, config, PruneModes::default()) - .expect("failed to create tree"); + let mut tree = BlockchainTree::new(externals, config).expect("failed to create tree"); assert_eq!( tree.insert_block(block1.clone(), BlockValidationKind::Exhaustive).unwrap(), @@ -2409,8 +2398,8 @@ mod tests { tree.make_canonical(block2.hash()).unwrap(); // restart - let mut tree = BlockchainTree::new(cloned_externals_1, config, PruneModes::default()) - .expect("failed to create tree"); + let mut tree = + BlockchainTree::new(cloned_externals_1, config).expect("failed to create tree"); assert_eq!(tree.block_indices().last_finalized_block(), 0); let mut block1a = block1; @@ -2426,8 +2415,7 @@ mod tests { tree.finalize_block(block1a.number).unwrap(); // restart - let tree = BlockchainTree::new(cloned_externals_2, config, PruneModes::default()) - .expect("failed to create tree"); + let tree = BlockchainTree::new(cloned_externals_2, config).expect("failed to create tree"); assert_eq!(tree.block_indices().last_finalized_block(), block1a.number); } diff --git a/crates/consensus/beacon/src/engine/test_utils.rs b/crates/consensus/beacon/src/engine/test_utils.rs index 5627e3618..98574c0e3 100644 --- a/crates/consensus/beacon/src/engine/test_utils.rs +++ b/crates/consensus/beacon/src/engine/test_utils.rs @@ -389,12 +389,8 @@ where // Setup blockchain tree let externals = TreeExternals::new(provider_factory.clone(), consensus, executor_factory); let tree = Arc::new(ShareableBlockchainTree::new( - BlockchainTree::new( - externals, - BlockchainTreeConfig::new(1, 2, 3, 2), - PruneModes::default(), - ) - .expect("failed to create tree"), + BlockchainTree::new(externals, BlockchainTreeConfig::new(1, 2, 3, 2)) + .expect("failed to create tree"), )); let genesis_block = self.base_config.chain_spec.genesis_header().seal_slow(); diff --git a/crates/node/builder/src/launch/common.rs b/crates/node/builder/src/launch/common.rs index e15a852e7..7f3fce644 100644 --- a/crates/node/builder/src/launch/common.rs +++ b/crates/node/builder/src/launch/common.rs @@ -671,11 +671,11 @@ where let consensus: Arc = Arc::new(components.consensus().clone()); let tree_externals = TreeExternals::new( - self.provider_factory().clone(), + self.provider_factory().clone().with_prune_modes(self.prune_modes()), consensus.clone(), components.block_executor().clone(), ); - let tree = BlockchainTree::new(tree_externals, *self.tree_config(), self.prune_modes())? + let tree = BlockchainTree::new(tree_externals, *self.tree_config())? .with_sync_metrics_tx(self.sync_metrics_tx()) // Note: This is required because we need to ensure that both the components and the // tree are using the same channel for canon state notifications. This will be removed