From a71fb797173d323a1be36c275e104ff5cd8dd29c Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Sat, 15 Mar 2025 11:40:09 +0100 Subject: [PATCH] chore: rm reth-primitives from downloaders (#15059) --- Cargo.lock | 2 +- crates/net/downloaders/Cargo.toml | 6 ++- crates/net/downloaders/src/bodies/bodies.rs | 15 ++++--- crates/net/downloaders/src/bodies/queue.rs | 3 +- crates/net/downloaders/src/bodies/request.rs | 10 ++--- crates/net/downloaders/src/bodies/task.rs | 22 +++++----- .../net/downloaders/src/bodies/test_utils.rs | 6 +-- crates/net/downloaders/src/file_client.rs | 42 +++++++++---------- crates/net/downloaders/src/headers/noop.rs | 2 +- .../src/headers/reverse_headers.rs | 2 +- crates/net/downloaders/src/headers/task.rs | 2 +- .../net/downloaders/src/headers/test_utils.rs | 2 +- .../downloaders/src/receipt_file_client.rs | 17 ++++---- .../src/test_utils/bodies_client.rs | 2 +- crates/net/downloaders/src/test_utils/mod.rs | 3 +- 15 files changed, 67 insertions(+), 69 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b625c9cb6..ea2e4e0375 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7389,10 +7389,10 @@ dependencies = [ "reth-consensus", "reth-db", "reth-db-api", + "reth-ethereum-primitives", "reth-metrics", "reth-network-p2p", "reth-network-peers", - "reth-primitives", "reth-primitives-traits", "reth-provider", "reth-storage-api", diff --git a/crates/net/downloaders/Cargo.toml b/crates/net/downloaders/Cargo.toml index 40bc2e6f55..9c833e1704 100644 --- a/crates/net/downloaders/Cargo.toml +++ b/crates/net/downloaders/Cargo.toml @@ -17,7 +17,6 @@ reth-config.workspace = true reth-consensus.workspace = true reth-network-p2p.workspace = true reth-network-peers.workspace = true -reth-primitives.workspace = true reth-primitives-traits.workspace = true reth-storage-api.workspace = true reth-tasks.workspace = true @@ -25,6 +24,7 @@ reth-tasks.workspace = true # optional deps for the test-utils feature reth-db = { workspace = true, optional = true } reth-db-api = { workspace = true, optional = true } +reth-ethereum-primitives = { workspace = true, optional = true } reth-testing-utils = { workspace = true, optional = true } # ethereum @@ -54,6 +54,7 @@ tempfile = { workspace = true, optional = true } itertools.workspace = true [dev-dependencies] +reth-ethereum-primitives.workspace = true reth-chainspec.workspace = true reth-db = { workspace = true, features = ["test-utils"] } reth-db-api.workspace = true @@ -80,8 +81,9 @@ test-utils = [ "reth-network-p2p/test-utils", "reth-testing-utils", "reth-chainspec/test-utils", - "reth-primitives/test-utils", "reth-db-api?/test-utils", "reth-provider/test-utils", "reth-primitives-traits/test-utils", + "dep:reth-ethereum-primitives", + "reth-ethereum-primitives?/test-utils", ] diff --git a/crates/net/downloaders/src/bodies/bodies.rs b/crates/net/downloaders/src/bodies/bodies.rs index 93efd6dd93..a6e454b041 100644 --- a/crates/net/downloaders/src/bodies/bodies.rs +++ b/crates/net/downloaders/src/bodies/bodies.rs @@ -14,8 +14,7 @@ use reth_network_p2p::{ }, error::{DownloadError, DownloadResult}, }; -use reth_primitives::SealedHeader; -use reth_primitives_traits::{size::InMemorySize, Block}; +use reth_primitives_traits::{size::InMemorySize, Block, SealedHeader}; use reth_storage_api::HeaderProvider; use reth_tasks::{TaskSpawner, TokioTaskExecutor}; use std::{ @@ -644,7 +643,7 @@ mod tests { let (_static_dir, static_dir_path) = create_test_static_files_dir(); let mut downloader = BodiesDownloaderBuilder::default() - .build::( + .build::( client.clone(), Arc::new(TestConsensus::default()), ProviderFactory::::new( @@ -689,7 +688,7 @@ mod tests { let mut downloader = BodiesDownloaderBuilder::default() .with_request_limit(request_limit) - .build::( + .build::( client.clone(), Arc::new(TestConsensus::default()), ProviderFactory::::new( @@ -723,7 +722,7 @@ mod tests { let mut downloader = BodiesDownloaderBuilder::default() .with_stream_batch_size(stream_batch_size) .with_request_limit(request_limit) - .build::( + .build::( client.clone(), Arc::new(TestConsensus::default()), ProviderFactory::::new( @@ -761,7 +760,7 @@ mod tests { let mut downloader = BodiesDownloaderBuilder::default() .with_stream_batch_size(100) - .build::( + .build::( client.clone(), Arc::new(TestConsensus::default()), ProviderFactory::::new( @@ -807,7 +806,7 @@ mod tests { .with_stream_batch_size(10) .with_request_limit(1) .with_max_buffered_blocks_size_bytes(1) - .build::( + .build::( client.clone(), Arc::new(TestConsensus::default()), ProviderFactory::::new( @@ -844,7 +843,7 @@ mod tests { let mut downloader = BodiesDownloaderBuilder::default() .with_request_limit(3) .with_stream_batch_size(100) - .build::( + .build::( client.clone(), Arc::new(TestConsensus::default()), ProviderFactory::::new( diff --git a/crates/net/downloaders/src/bodies/queue.rs b/crates/net/downloaders/src/bodies/queue.rs index 73e4c68e88..480aa6de2a 100644 --- a/crates/net/downloaders/src/bodies/queue.rs +++ b/crates/net/downloaders/src/bodies/queue.rs @@ -9,8 +9,7 @@ use reth_network_p2p::{ bodies::{client::BodiesClient, response::BlockResponse}, error::DownloadResult, }; -use reth_primitives::SealedHeader; -use reth_primitives_traits::Block; +use reth_primitives_traits::{Block, SealedHeader}; use std::{ pin::Pin, sync::Arc, diff --git a/crates/net/downloaders/src/bodies/request.rs b/crates/net/downloaders/src/bodies/request.rs index b76681fec9..aa10db382a 100644 --- a/crates/net/downloaders/src/bodies/request.rs +++ b/crates/net/downloaders/src/bodies/request.rs @@ -9,8 +9,7 @@ use reth_network_p2p::{ priority::Priority, }; use reth_network_peers::{PeerId, WithPeerId}; -use reth_primitives::{BlockBody, GotExpected, SealedBlock, SealedHeader}; -use reth_primitives_traits::{Block, InMemorySize}; +use reth_primitives_traits::{Block, GotExpected, InMemorySize, SealedBlock, SealedHeader}; use std::{ collections::VecDeque, mem, @@ -171,7 +170,7 @@ where let bodies_len = bodies.len(); let mut bodies = bodies.into_iter().peekable(); - let mut total_size = bodies_capacity * mem::size_of::(); + let mut total_size = bodies_capacity * mem::size_of::(); while bodies.peek().is_some() { let next_header = match self.pending_headers.pop_front() { Some(header) => header, @@ -266,6 +265,7 @@ mod tests { test_utils::{generate_bodies, TestBodiesClient}, }; use reth_consensus::test_utils::TestConsensus; + use reth_ethereum_primitives::Block; use reth_testing_utils::{generators, generators::random_header_range}; /// Check if future returns empty bodies without dispatching any requests. @@ -275,7 +275,7 @@ mod tests { let headers = random_header_range(&mut rng, 0..20, B256::ZERO); let client = Arc::new(TestBodiesClient::default()); - let fut = BodiesRequestFuture::::new( + let fut = BodiesRequestFuture::::new( client.clone(), Arc::new(TestConsensus::default()), BodyDownloaderMetrics::default(), @@ -299,7 +299,7 @@ mod tests { let client = Arc::new( TestBodiesClient::default().with_bodies(bodies.clone()).with_max_batch_size(batch_size), ); - let fut = BodiesRequestFuture::::new( + let fut = BodiesRequestFuture::::new( client.clone(), Arc::new(TestConsensus::default()), BodyDownloaderMetrics::default(), diff --git a/crates/net/downloaders/src/bodies/task.rs b/crates/net/downloaders/src/bodies/task.rs index d3093aec49..8760428c00 100644 --- a/crates/net/downloaders/src/bodies/task.rs +++ b/crates/net/downloaders/src/bodies/task.rs @@ -195,11 +195,12 @@ mod tests { let client = Arc::new( TestBodiesClient::default().with_bodies(bodies.clone()).with_should_delay(true), ); - let downloader = BodiesDownloaderBuilder::default().build::( - client.clone(), - Arc::new(TestConsensus::default()), - factory, - ); + let downloader = BodiesDownloaderBuilder::default() + .build::( + client.clone(), + Arc::new(TestConsensus::default()), + factory, + ); let mut downloader = TaskDownloader::spawn(downloader); downloader.set_download_range(0..=19).expect("failed to set download range"); @@ -217,11 +218,12 @@ mod tests { reth_tracing::init_test_tracing(); let factory = create_test_provider_factory(); - let downloader = BodiesDownloaderBuilder::default().build::( - Arc::new(TestBodiesClient::default()), - Arc::new(TestConsensus::default()), - factory, - ); + let downloader = BodiesDownloaderBuilder::default() + .build::( + Arc::new(TestBodiesClient::default()), + Arc::new(TestConsensus::default()), + factory, + ); let mut downloader = TaskDownloader::spawn(downloader); downloader.set_download_range(1..=0).expect("failed to set download range"); diff --git a/crates/net/downloaders/src/bodies/test_utils.rs b/crates/net/downloaders/src/bodies/test_utils.rs index 0e5e265078..aeb4488eb0 100644 --- a/crates/net/downloaders/src/bodies/test_utils.rs +++ b/crates/net/downloaders/src/bodies/test_utils.rs @@ -6,9 +6,9 @@ use alloy_consensus::BlockHeader; use alloy_primitives::B256; use reth_db::DatabaseEnv; use reth_db_api::{database::Database, tables, transaction::DbTxMut}; +use reth_ethereum_primitives::BlockBody; use reth_network_p2p::bodies::response::BlockResponse; -use reth_primitives::{BlockBody, SealedBlock, SealedHeader}; -use reth_primitives_traits::Block; +use reth_primitives_traits::{Block, SealedBlock, SealedHeader}; use std::collections::HashMap; pub(crate) fn zip_blocks<'a, B: Block>( @@ -31,7 +31,7 @@ pub(crate) fn zip_blocks<'a, B: Block>( pub(crate) fn create_raw_bodies( headers: impl IntoIterator, bodies: &mut HashMap, -) -> Vec { +) -> Vec { headers .into_iter() .map(|header| { diff --git a/crates/net/downloaders/src/file_client.rs b/crates/net/downloaders/src/file_client.rs index ac6b565322..ede1c80415 100644 --- a/crates/net/downloaders/src/file_client.rs +++ b/crates/net/downloaders/src/file_client.rs @@ -1,5 +1,3 @@ -use std::{collections::HashMap, io, path::Path, sync::Arc}; - use alloy_consensus::BlockHeader; use alloy_eips::BlockHashOrNumber; use alloy_primitives::{BlockHash, BlockNumber, Sealable, B256}; @@ -15,8 +13,8 @@ use reth_network_p2p::{ BlockClient, }; use reth_network_peers::PeerId; -use reth_primitives::{SealedBlock, SealedHeader}; -use reth_primitives_traits::{Block, BlockBody, FullBlock}; +use reth_primitives_traits::{Block, BlockBody, FullBlock, SealedBlock, SealedHeader}; +use std::{collections::HashMap, io, path::Path, sync::Arc}; use thiserror::Error; use tokio::{fs::File, io::AsyncReadExt}; use tokio_stream::StreamExt; @@ -43,7 +41,7 @@ pub const DEFAULT_BYTE_LEN_CHUNK_CHAIN_FILE: u64 = 1_000_000_000; /// /// This reads the entire file into memory, so it is not suitable for large files. #[derive(Debug, Clone)] -pub struct FileClient { +pub struct FileClient { /// The buffered headers retrieved when fetching new bodies. headers: HashMap, @@ -197,7 +195,7 @@ impl FileClient { } } -struct FileClientBuilder { +struct FileClientBuilder { pub consensus: Arc>, pub parent_header: Option>, } @@ -576,11 +574,11 @@ mod tests { use futures_util::stream::StreamExt; use rand::Rng; use reth_consensus::{noop::NoopConsensus, test_utils::TestConsensus}; + use reth_ethereum_primitives::Block; use reth_network_p2p::{ bodies::downloader::BodyDownloader, headers::downloader::{HeaderDownloader, SyncTarget}, }; - use reth_primitives::Block; use reth_provider::test_utils::create_test_provider_factory; use std::sync::Arc; @@ -595,18 +593,17 @@ mod tests { // create an empty file let file = tempfile::tempfile().unwrap(); - let client: Arc = Arc::new( + let client: Arc> = Arc::new( FileClient::from_file(file.into(), NoopConsensus::arc()) .await .unwrap() .with_bodies(bodies.clone()), ); - let mut downloader = BodiesDownloaderBuilder::default() - .build::( - client.clone(), - Arc::new(TestConsensus::default()), - factory, - ); + let mut downloader = BodiesDownloaderBuilder::default().build::( + client.clone(), + Arc::new(TestConsensus::default()), + factory, + ); downloader.set_download_range(0..=19).expect("failed to set download range"); assert_matches!( @@ -625,7 +622,7 @@ mod tests { let p0 = child_header(&p1); let file = tempfile::tempfile().unwrap(); - let client: Arc = Arc::new( + let client: Arc> = Arc::new( FileClient::from_file(file.into(), NoopConsensus::arc()).await.unwrap().with_headers( HashMap::from([ (0u64, p0.clone_header()), @@ -656,7 +653,7 @@ mod tests { // Generate some random blocks let (file, headers, _) = generate_bodies_file(0..=19).await; // now try to read them back - let client: Arc = + let client: Arc> = Arc::new(FileClient::from_file(file, NoopConsensus::arc()).await.unwrap()); // construct headers downloader and use first header @@ -682,18 +679,17 @@ mod tests { let (file, headers, mut bodies) = generate_bodies_file(0..=19).await; // now try to read them back - let client: Arc = + let client: Arc> = Arc::new(FileClient::from_file(file, NoopConsensus::arc()).await.unwrap()); // insert headers in db for the bodies downloader insert_headers(factory.db_ref().db(), &headers); - let mut downloader = BodiesDownloaderBuilder::default() - .build::( - client.clone(), - Arc::new(TestConsensus::default()), - factory, - ); + let mut downloader = BodiesDownloaderBuilder::default().build::( + client.clone(), + Arc::new(TestConsensus::default()), + factory, + ); downloader.set_download_range(0..=19).expect("failed to set download range"); assert_matches!( diff --git a/crates/net/downloaders/src/headers/noop.rs b/crates/net/downloaders/src/headers/noop.rs index 45a0656c4a..ec02816ad9 100644 --- a/crates/net/downloaders/src/headers/noop.rs +++ b/crates/net/downloaders/src/headers/noop.rs @@ -4,7 +4,7 @@ use reth_network_p2p::headers::{ downloader::{HeaderDownloader, SyncTarget}, error::HeadersDownloaderError, }; -use reth_primitives::SealedHeader; +use reth_primitives_traits::SealedHeader; use std::fmt::Debug; /// A [`HeaderDownloader`] implementation that does nothing. diff --git a/crates/net/downloaders/src/headers/reverse_headers.rs b/crates/net/downloaders/src/headers/reverse_headers.rs index ac837b51be..c010c8c0ba 100644 --- a/crates/net/downloaders/src/headers/reverse_headers.rs +++ b/crates/net/downloaders/src/headers/reverse_headers.rs @@ -20,7 +20,7 @@ use reth_network_p2p::{ priority::Priority, }; use reth_network_peers::PeerId; -use reth_primitives::{GotExpected, SealedHeader}; +use reth_primitives_traits::{GotExpected, SealedHeader}; use reth_tasks::{TaskSpawner, TokioTaskExecutor}; use std::{ cmp::{Ordering, Reverse}, diff --git a/crates/net/downloaders/src/headers/task.rs b/crates/net/downloaders/src/headers/task.rs index d3522c07f8..38eb1429a8 100644 --- a/crates/net/downloaders/src/headers/task.rs +++ b/crates/net/downloaders/src/headers/task.rs @@ -6,7 +6,7 @@ use reth_network_p2p::headers::{ downloader::{HeaderDownloader, SyncTarget}, error::HeadersDownloaderResult, }; -use reth_primitives::SealedHeader; +use reth_primitives_traits::SealedHeader; use reth_tasks::{TaskSpawner, TokioTaskExecutor}; use std::{ fmt::Debug, diff --git a/crates/net/downloaders/src/headers/test_utils.rs b/crates/net/downloaders/src/headers/test_utils.rs index 34bcfd43ac..e59853218b 100644 --- a/crates/net/downloaders/src/headers/test_utils.rs +++ b/crates/net/downloaders/src/headers/test_utils.rs @@ -2,7 +2,7 @@ #![allow(dead_code)] -use reth_primitives::SealedHeader; +use reth_primitives_traits::SealedHeader; /// Returns a new [`SealedHeader`] that's the child header of the given `parent`. pub(crate) fn child_header(parent: &SealedHeader) -> SealedHeader { diff --git a/crates/net/downloaders/src/receipt_file_client.rs b/crates/net/downloaders/src/receipt_file_client.rs index 47608b9ace..2bd477f43e 100644 --- a/crates/net/downloaders/src/receipt_file_client.rs +++ b/crates/net/downloaders/src/receipt_file_client.rs @@ -1,7 +1,6 @@ use std::{fmt, io}; use futures::Future; -use reth_primitives::Receipt; use tokio::io::AsyncReadExt; use tokio_stream::StreamExt; use tokio_util::codec::{Decoder, FramedRead}; @@ -203,9 +202,9 @@ where } } -/// [`Receipt`] with block number. +/// Receipt with block number. #[derive(Debug, PartialEq, Eq)] -pub struct ReceiptWithBlockNumber { +pub struct ReceiptWithBlockNumber { /// Receipt. pub receipt: R, /// Block number. @@ -220,7 +219,7 @@ mod test { hex, Bytes, Log, LogData, }; use alloy_rlp::{Decodable, RlpDecodable}; - use reth_primitives::{Receipt, TxType}; + use reth_ethereum_primitives::{Receipt, TxType}; use reth_tracing::init_test_tracing; use tokio_util::codec::Decoder; @@ -240,7 +239,7 @@ mod test { #[rlp(trailing)] struct MockReceiptContainer(Option); - impl TryFrom for ReceiptWithBlockNumber { + impl TryFrom for ReceiptWithBlockNumber { type Error = FileClientError; fn try_from(exported_receipt: MockReceipt) -> Result { let MockReceipt { tx_type, status, cumulative_gas_used, logs, block_number: number } = @@ -262,7 +261,7 @@ mod test { struct MockReceiptFileCodec; impl Decoder for MockReceiptFileCodec { - type Item = Option; + type Item = Option>; type Error = FileClientError; fn decode(&mut self, src: &mut BytesMut) -> Result, Self::Error> { @@ -325,7 +324,7 @@ mod test { } } - fn receipt_block_1() -> ReceiptWithBlockNumber { + fn receipt_block_1() -> ReceiptWithBlockNumber { let log_1 = Log { address: address!("0x8ce8c13d816fe6daf12d6fd9e4952e1fc88850ae"), data: LogData::new( @@ -379,7 +378,7 @@ mod test { ReceiptWithBlockNumber { receipt, number: 1 } } - fn receipt_block_2() -> ReceiptWithBlockNumber { + fn receipt_block_2() -> ReceiptWithBlockNumber { let log_1 = Log { address: address!("0x8ce8c13d816fe6daf12d6fd9e4952e1fc88850ae"), data: LogData::new( @@ -417,7 +416,7 @@ mod test { ReceiptWithBlockNumber { receipt, number: 2 } } - fn receipt_block_3() -> ReceiptWithBlockNumber { + fn receipt_block_3() -> ReceiptWithBlockNumber { let log_1 = Log { address: address!("0x8ce8c13d816fe6daf12d6fd9e4952e1fc88850ae"), data: LogData::new( diff --git a/crates/net/downloaders/src/test_utils/bodies_client.rs b/crates/net/downloaders/src/test_utils/bodies_client.rs index d84d92363e..fed86b989d 100644 --- a/crates/net/downloaders/src/test_utils/bodies_client.rs +++ b/crates/net/downloaders/src/test_utils/bodies_client.rs @@ -1,11 +1,11 @@ use alloy_primitives::B256; +use reth_ethereum_primitives::BlockBody; use reth_network_p2p::{ bodies::client::{BodiesClient, BodiesFut}, download::DownloadClient, priority::Priority, }; use reth_network_peers::PeerId; -use reth_primitives::BlockBody; use std::{ collections::HashMap, fmt::Debug, diff --git a/crates/net/downloaders/src/test_utils/mod.rs b/crates/net/downloaders/src/test_utils/mod.rs index 698f30faee..159859779e 100644 --- a/crates/net/downloaders/src/test_utils/mod.rs +++ b/crates/net/downloaders/src/test_utils/mod.rs @@ -5,7 +5,7 @@ use crate::{bodies::test_utils::create_raw_bodies, file_codec::BlockFileCodec}; use alloy_primitives::B256; use futures::SinkExt; -use reth_primitives::{BlockBody, SealedHeader}; +use reth_ethereum_primitives::BlockBody; use reth_testing_utils::generators::{self, random_block_range, BlockRangeParams}; use std::{collections::HashMap, io::SeekFrom, ops::RangeInclusive}; use tokio::{fs::File, io::AsyncSeekExt}; @@ -13,6 +13,7 @@ use tokio_util::codec::FramedWrite; mod bodies_client; pub use bodies_client::TestBodiesClient; +use reth_primitives_traits::SealedHeader; /// Metrics scope used for testing. pub(crate) const TEST_SCOPE: &str = "downloaders.test";