From 75891c959beb07e80adb7a7f069f84cca4716c4d Mon Sep 17 00:00:00 2001 From: kyscott18 <43524469+kyscott18@users.noreply.github.com> Date: Tue, 9 Jun 2026 14:16:27 +0000 Subject: [PATCH 1/3] fix(backend): resolve auto-fixable clippy lints Addresses 6 of the 8 clippy findings surfaced by the new rust CI job: - needless_return (server.rs) - match_like_matches_macro (server.rs) - ptr_arg: &Vec -> &[T] (event_filter.rs) - needless_borrow (event_filter.rs) - manual_is_multiple_of (event_listener.rs) - clone_on_copy (serializable_event.rs) Remaining (require manual judgment, deferred): large_enum_variant (server.rs), should_implement_trait for from_str (event_listener.rs). --- backend/src/lib/event_filter.rs | 4 ++-- backend/src/lib/event_listener.rs | 2 +- backend/src/lib/serializable_event.rs | 2 +- backend/src/lib/server.rs | 8 ++------ 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/backend/src/lib/event_filter.rs b/backend/src/lib/event_filter.rs index 41f8373..81f5311 100644 --- a/backend/src/lib/event_filter.rs +++ b/backend/src/lib/event_filter.rs @@ -63,7 +63,7 @@ pub struct ArrayPrefixFilter { impl ArrayPrefixFilter { /// Checks if input array starts with filter values (prefix match) - pub fn matches(&self, value: &Vec) -> bool { + pub fn matches(&self, value: &[T]) -> bool { self.values.is_empty() || value.starts_with(&self.values) } @@ -192,7 +192,7 @@ impl EventFilter { return true; } - if self.includes_native_transfers() && is_native_transfer(&event) { + if self.includes_native_transfers() && is_native_transfer(event) { return true; } diff --git a/backend/src/lib/event_listener.rs b/backend/src/lib/event_listener.rs index 27a8522..d40001c 100644 --- a/backend/src/lib/event_listener.rs +++ b/backend/src/lib/event_listener.rs @@ -284,7 +284,7 @@ pub fn run_event_listener( last_event_timestamp_ns = Some(event.info().record_epoch_nanos); event_count += 1; - if event_count % 100 == 0 { + if event_count.is_multiple_of(100) { debug!("Processed {} events", event_count); } diff --git a/backend/src/lib/serializable_event.rs b/backend/src/lib/serializable_event.rs index 2005903..f5faba6 100644 --- a/backend/src/lib/serializable_event.rs +++ b/backend/src/lib/serializable_event.rs @@ -326,7 +326,7 @@ impl From<&EventData> for SerializableEventData { txn_hash: data.txn_hash.map(B256::from), payload: SerializableExecEvent::from(&data.payload), seqno: data.seqno, - timestamp_ns: data.timestamp_ns.clone(), + timestamp_ns: data.timestamp_ns, } } } diff --git a/backend/src/lib/server.rs b/backend/src/lib/server.rs index a2c470c..0c795e2 100644 --- a/backend/src/lib/server.rs +++ b/backend/src/lib/server.rs @@ -80,7 +80,7 @@ impl TPSTracker { self.block_2_txs = self.block_3_txs; self.block_3_txs = self.current_tx_count; self.current_tx_count = 0; - return self.block_1_txs + self.block_2_txs + (self.block_3_txs / 2); + self.block_1_txs + self.block_2_txs + (self.block_3_txs / 2) } } @@ -289,11 +289,7 @@ async fn run_event_forwarder_task( } // Send accesses update on BlockEnd events (after all access events are processed) - let send_accesses_update = if let EventName::BlockEnd = event_data.event_name { - true - } else { - false - }; + let send_accesses_update = matches!(event_data.event_name, EventName::BlockEnd); let _ = event_broadcast_sender.send(EventDataOrMetrics::Event(event_data)); From 7ba86b2286bab5357a48ed80dd35a8dadd1e42fd Mon Sep 17 00:00:00 2001 From: kyscott18 <43524469+kyscott18@users.noreply.github.com> Date: Tue, 9 Jun 2026 19:25:04 +0000 Subject: [PATCH 2/3] fix(backend): resolve non-auto-fixable clippy lints - large_enum_variant: box the 640-byte Event variant of EventDataOrMetrics (Event(Box)). Since From::from infers its parameter type from the argument (deref coercion does not apply), the match-site call passes &*event_data to select From<&EventData>; construction uses Box::new(..). - should_implement_trait: rename inherent EventName::from_str -> from_name (and its single caller) so it no longer shadows std::str::FromStr::from_str. --- backend/src/lib/event_listener.rs | 4 ++-- backend/src/lib/server.rs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/lib/event_listener.rs b/backend/src/lib/event_listener.rs index d40001c..6d311fc 100644 --- a/backend/src/lib/event_listener.rs +++ b/backend/src/lib/event_listener.rs @@ -85,7 +85,7 @@ impl EventName { } } - pub fn from_str(s: &str) -> Option { + pub fn from_name(s: &str) -> Option { match s { "RECORD_ERROR" => Some(EventName::RecordError), "BLOCK_START" => Some(EventName::BlockStart), @@ -157,7 +157,7 @@ fn event_to_data(event: &EventDescriptor) -> Option } = event.info(); // Convert event_type to EventName enum for type safety - let event_name = EventName::from_str(EXEC_EVENT_NAMES[event_type as usize])?; + let event_name = EventName::from_name(EXEC_EVENT_NAMES[event_type as usize])?; // Get block number if present let block_number = if flow_info.block_seqno != 0 { diff --git a/backend/src/lib/server.rs b/backend/src/lib/server.rs index 0c795e2..57766bd 100644 --- a/backend/src/lib/server.rs +++ b/backend/src/lib/server.rs @@ -43,7 +43,7 @@ pub struct TopAccessesData { #[derive(Debug, Clone)] pub enum EventDataOrMetrics { - Event(EventData), + Event(Box), TopAccesses(TopAccessesData), TPS(usize) } @@ -95,7 +95,7 @@ fn process_event( ) { match event { EventDataOrMetrics::Event(event_data) => { - let serializable = SerializableEventData::from(&event_data); + let serializable = SerializableEventData::from(&*event_data); if filter.matches_event(&serializable) { events_buf.push(serializable); } @@ -291,7 +291,7 @@ async fn run_event_forwarder_task( // Send accesses update on BlockEnd events (after all access events are processed) let send_accesses_update = matches!(event_data.event_name, EventName::BlockEnd); - let _ = event_broadcast_sender.send(EventDataOrMetrics::Event(event_data)); + let _ = event_broadcast_sender.send(EventDataOrMetrics::Event(Box::new(event_data))); if send_accesses_update { let top_accesses_data = TopAccessesData { From de4daf8b306541116aea477420723eaacd4aa8e6 Mon Sep 17 00:00:00 2001 From: kyscott18 <43524469+kyscott18@users.noreply.github.com> Date: Tue, 9 Jun 2026 19:31:00 +0000 Subject: [PATCH 3/3] fix(backend): remove redundant u64 casts in client (unnecessary_cast) Surfaced once the lib compiled clean: timestamp_ns is u64, so the (u64 - u64) as u64 casts are redundant; drop the cast and parens. --- backend/src/bin/client.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/bin/client.rs b/backend/src/bin/client.rs index 4dbb548..85309ef 100644 --- a/backend/src/bin/client.rs +++ b/backend/src/bin/client.rs @@ -110,7 +110,7 @@ async fn main() -> Result<(), Box> { }, SerializableExecEvent::TxnEvmOutput { txn_index, .. } => { if let Some((txn_hash, txn_start_ns)) = client_state.txs_start_ns.remove(&txn_index) { - let txn_duration = std::time::Duration::from_nanos((event.timestamp_ns - txn_start_ns) as u64); + let txn_duration = std::time::Duration::from_nanos(event.timestamp_ns - txn_start_ns); client_state.block_txns_total_duration += txn_duration; log_event!("TxnEvmOutput", txn_index = txn_index, txn_hash = txn_hash, duration = txn_duration); @@ -120,7 +120,7 @@ async fn main() -> Result<(), Box> { }, SerializableExecEvent::BlockPerfEvmExit => { log_event!("BlockPerfEvmExit"); - let block_duration = std::time::Duration::from_nanos((event.timestamp_ns - client_state.block_start_ns) as u64); + let block_duration = std::time::Duration::from_nanos(event.timestamp_ns - client_state.block_start_ns); let parallel_execution_savings = client_state.block_txns_total_duration.checked_sub(block_duration); let savings_pct = if parallel_execution_savings.is_none() { // This only happens with really small/empty blocks error!("Parallel execution savings is negative: txs={:?} block={:?} height={}", client_state.block_txns_total_duration, block_duration, client_state.current_block_number);