diff --git a/Makefile b/Makefile index ecb9a382c..1df6805a6 100644 --- a/Makefile +++ b/Makefile @@ -153,7 +153,7 @@ build-deb: build-deb-bid-scraper build-deb-rbuilder-operator build-deb-rbuilder- .PHONY: lint lint: ## Run the linters cargo fmt -- --check - cargo clippy --workspace --features "$(FEATURES)" -- -D warnings + cargo clippy --workspace --features "$(FEATURES)" --all-targets -- -D warnings .PHONY: test test: ## Run the tests for rbuilder. At reth 1.8.2 we started getting some memory errors (when creating the tmp dbs) so we had to limit the number of threads. @@ -166,7 +166,7 @@ lt: lint test ## Run "lint" and "test" fmt: ## Format the code cargo fmt cargo fix --allow-staged - cargo clippy --features "$(FEATURES)" --fix --allow-staged + cargo clippy --workspace --features "$(FEATURES)" --all-targets --fix --allow-staged .PHONY: bench bench: ## Run benchmarks diff --git a/crates/rbuilder/benches/benchmarks/txpool_fetcher.rs b/crates/rbuilder/benches/benchmarks/txpool_fetcher.rs index cdff5e6ca..a07db3327 100644 --- a/crates/rbuilder/benches/benchmarks/txpool_fetcher.rs +++ b/crates/rbuilder/benches/benchmarks/txpool_fetcher.rs @@ -6,9 +6,10 @@ use alloy_rpc_types::TransactionRequest; use alloy_signer_local::PrivateKeySigner; use criterion::{criterion_group, Criterion}; use rbuilder::live_builder::order_input::{ - txpool_fetcher::subscribe_to_txpool_with_blobs, OrderInputConfig, + mempool_txs_detector::MempoolTxsDetector, txpool_fetcher::subscribe_to_txpool_with_blobs, + OrderInputConfig, }; -use std::time::Duration; +use std::{sync::Arc, time::Duration}; use tokio::sync::mpsc; use tokio_util::sync::CancellationToken; @@ -22,6 +23,7 @@ async fn txpool_receive_util(count: u32) { subscribe_to_txpool_with_blobs( OrderInputConfig::default_e2e(), sender, + Arc::new(MempoolTxsDetector::new()), CancellationToken::new(), ) .await diff --git a/crates/rbuilder/src/building/block_orders/mod.rs b/crates/rbuilder/src/building/block_orders/mod.rs index dcc518bd0..44c99743a 100644 --- a/crates/rbuilder/src/building/block_orders/mod.rs +++ b/crates/rbuilder/src/building/block_orders/mod.rs @@ -1,7 +1,5 @@ mod prioritized_order_store; -#[cfg(test)] -mod order_dumper; pub mod order_priority; mod test_data_generator; use std::sync::Arc; diff --git a/crates/rbuilder/src/building/block_orders/order_dumper.rs b/crates/rbuilder/src/building/block_orders/order_dumper.rs deleted file mode 100644 index 80d762fa9..000000000 --- a/crates/rbuilder/src/building/block_orders/order_dumper.rs +++ /dev/null @@ -1,64 +0,0 @@ -//! Soon to be replaced my mockall - -use std::{collections::VecDeque, sync::Arc}; - -use rbuilder_primitives::{OrderId, SimulatedOrder}; - -use super::SimulatedOrderSink; -pub enum OrderStoreAction { - Insert(Arc), - Remove(OrderId), -} - -/// Helper to analyze the generated flow of orders -/// The idea es to create this as a sink for a source object and the -/// when we execute something on the source we check via pop_insert, pop_remove,etc -/// if the behavior was correct. -#[derive(Default)] -pub struct OrderDumper { - pub actions: VecDeque, -} - -impl SimulatedOrderSink for OrderDumper { - fn insert_order(&mut self, order: Arc) { - self.actions.push_back(OrderStoreAction::Insert(order)); - } - - fn remove_order(&mut self, id: OrderId) -> Option> { - self.actions.push_back(OrderStoreAction::Remove(id)); - None - } -} - -impl Drop for OrderDumper { - fn drop(&mut self) { - // Every action must be analyzed - assert!(self.actions.is_empty()); - } -} - -impl OrderDumper { - /// # Panics - /// empty or first not insert - pub fn pop_insert(&mut self) -> Arc { - if self.actions.is_empty() { - panic!("No actions, expected insert"); - } - match self.actions.pop_front().unwrap() { - OrderStoreAction::Insert(sim_order) => sim_order, - OrderStoreAction::Remove(_) => panic!("Expected insert found remove"), - } - } - - /// # Panics - /// empty or first not remove - pub fn pop_remove(&mut self) -> OrderId { - if self.actions.is_empty() { - panic!("No actions, expected insert"); - } - match self.actions.pop_front().unwrap() { - OrderStoreAction::Insert(_) => panic!("Expected remove found insert"), - OrderStoreAction::Remove(id) => id, - } - } -} diff --git a/crates/rbuilder/src/building/builders/parallel_builder/conflict_task_generator.rs b/crates/rbuilder/src/building/builders/parallel_builder/conflict_task_generator.rs index a00eea7c8..0888eb348 100644 --- a/crates/rbuilder/src/building/builders/parallel_builder/conflict_task_generator.rs +++ b/crates/rbuilder/src/building/builders/parallel_builder/conflict_task_generator.rs @@ -3,7 +3,7 @@ use alloy_primitives::{utils::format_ether, U256}; use crossbeam_queue::SegQueue; use itertools::Itertools; use rbuilder_primitives::SimulatedOrder; -use std::{sync::Arc, time::Instant}; +use std::{cmp::Reverse, sync::Arc, time::Instant}; use tracing::trace; use super::{ @@ -52,7 +52,7 @@ impl ConflictTaskGenerator { /// * `new_groups` - A vector of new [ConflictGroup]s to process. pub fn process_groups(&mut self, new_groups: Vec) { let mut sorted_groups = new_groups; - sorted_groups.sort_by(|a, b| b.orders.len().cmp(&a.orders.len())); + sorted_groups.sort_by_key(|b| Reverse(b.orders.len())); let mut processed_groups = HashSet::default(); for new_group in sorted_groups { diff --git a/crates/rbuilder/src/building/builders/parallel_builder/groups.rs b/crates/rbuilder/src/building/builders/parallel_builder/groups.rs index f0ebede3c..23e4e1e77 100644 --- a/crates/rbuilder/src/building/builders/parallel_builder/groups.rs +++ b/crates/rbuilder/src/building/builders/parallel_builder/groups.rs @@ -193,7 +193,7 @@ impl ConflictFinder { let mut code_writes: Vec
= used_state .created_contracts .into_iter() - .chain(used_state.destructed_contracts.into_iter()) + .chain(used_state.destructed_contracts) .collect(); code_writes.sort_unstable(); code_writes.dedup(); diff --git a/crates/rbuilder/src/building/testing/bundle_tests/setup.rs b/crates/rbuilder/src/building/testing/bundle_tests/setup.rs index 94c982dfd..28d76425b 100644 --- a/crates/rbuilder/src/building/testing/bundle_tests/setup.rs +++ b/crates/rbuilder/src/building/testing/bundle_tests/setup.rs @@ -212,6 +212,7 @@ impl TestSetup { current_value, ) } + #[allow(clippy::result_large_err)] fn try_commit_order(&mut self) -> eyre::Result> { let state_provider: Arc = Arc::from(self.test_chain.provider_factory().latest()?); diff --git a/crates/rbuilder/src/live_builder/mod.rs b/crates/rbuilder/src/live_builder/mod.rs index faa16711f..f18e9fac7 100644 --- a/crates/rbuilder/src/live_builder/mod.rs +++ b/crates/rbuilder/src/live_builder/mod.rs @@ -371,8 +371,8 @@ where mev_blocker_price, payload .relay_registrations - .iter() - .filter_map(|(_, r)| r.adjustment_fee_payer) + .values() + .filter_map(|r| r.adjustment_fee_payer) .collect(), mempool_detector.clone(), ) { diff --git a/crates/rbuilder/src/utils/receipts.rs b/crates/rbuilder/src/utils/receipts.rs index 13f151a1a..aa6f1df1e 100644 --- a/crates/rbuilder/src/utils/receipts.rs +++ b/crates/rbuilder/src/utils/receipts.rs @@ -91,7 +91,7 @@ pub fn calculate_receipts_data( } let mut receipts_with_blooms = Vec::with_capacity(executed_tx_infos.len()); - for (info, logs_bloom) in executed_tx_infos.iter().zip(receipts_blooms.into_iter()) { + for (info, logs_bloom) in executed_tx_infos.iter().zip(receipts_blooms) { receipts_with_blooms.push(ReceiptWithBloom { receipt: &info.receipt, logs_bloom,