From 4d46962a658ab21edffa76a32012768e39dae291 Mon Sep 17 00:00:00 2001 From: Ayush Dubey <61616662+Ayushdubey86@users.noreply.github.com> Date: Wed, 30 Apr 2025 18:01:02 +0530 Subject: [PATCH] chore: Adding metric feature gate (#15971) Co-authored-by: Matthias Seitz --- crates/trie/sparse/src/lib.rs | 1 + crates/trie/sparse/src/metrics.rs | 30 ++++++++++++------------------ crates/trie/sparse/src/state.rs | 22 ++++++++++++++++------ 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/crates/trie/sparse/src/lib.rs b/crates/trie/sparse/src/lib.rs index 92f2d33df7..617622d194 100644 --- a/crates/trie/sparse/src/lib.rs +++ b/crates/trie/sparse/src/lib.rs @@ -13,6 +13,7 @@ pub use trie::*; pub mod blinded; +#[cfg(feature = "metrics")] mod metrics; /// Re-export sparse trie error types. diff --git a/crates/trie/sparse/src/metrics.rs b/crates/trie/sparse/src/metrics.rs index 088a7e8fbb..44f9c9dc95 100644 --- a/crates/trie/sparse/src/metrics.rs +++ b/crates/trie/sparse/src/metrics.rs @@ -1,6 +1,5 @@ //! Metrics for the sparse state trie -#[cfg(feature = "metrics")] use reth_metrics::{metrics::Histogram, Metrics}; /// Metrics for the sparse state trie @@ -17,28 +16,24 @@ pub(crate) struct SparseStateTrieMetrics { /// Number of total storage nodes, including those that were skipped. pub(crate) multiproof_total_storage_nodes: u64, /// The actual metrics we will record into the histogram - #[cfg(feature = "metrics")] pub(crate) histograms: SparseStateTrieHistograms, } impl SparseStateTrieMetrics { /// Record the metrics into the histograms pub(crate) fn record(&self) { - #[cfg(feature = "metrics")] - { - self.histograms - .multiproof_skipped_account_nodes - .record(self.multiproof_skipped_account_nodes as f64); - self.histograms - .multiproof_total_account_nodes - .record(self.multiproof_total_account_nodes as f64); - self.histograms - .multiproof_skipped_storage_nodes - .record(self.multiproof_skipped_storage_nodes as f64); - self.histograms - .multiproof_total_storage_nodes - .record(self.multiproof_total_storage_nodes as f64); - } + self.histograms + .multiproof_skipped_account_nodes + .record(self.multiproof_skipped_account_nodes as f64); + self.histograms + .multiproof_total_account_nodes + .record(self.multiproof_total_account_nodes as f64); + self.histograms + .multiproof_skipped_storage_nodes + .record(self.multiproof_skipped_storage_nodes as f64); + self.histograms + .multiproof_total_storage_nodes + .record(self.multiproof_total_storage_nodes as f64); } /// Increment the skipped account nodes counter by the given count @@ -63,7 +58,6 @@ impl SparseStateTrieMetrics { } /// Metrics for the sparse state trie -#[cfg(feature = "metrics")] #[derive(Metrics)] #[metrics(scope = "sparse_state_trie")] pub(crate) struct SparseStateTrieHistograms { diff --git a/crates/trie/sparse/src/state.rs b/crates/trie/sparse/src/state.rs index 25f39b4252..07d6bd2370 100644 --- a/crates/trie/sparse/src/state.rs +++ b/crates/trie/sparse/src/state.rs @@ -1,6 +1,5 @@ use crate::{ blinded::{BlindedProvider, BlindedProviderFactory, DefaultBlindedProviderFactory}, - metrics::SparseStateTrieMetrics, RevealedSparseTrie, SparseTrie, TrieMasks, }; use alloc::{collections::VecDeque, vec::Vec}; @@ -38,7 +37,8 @@ pub struct SparseStateTrie, /// Metrics for the sparse state trie. - metrics: SparseStateTrieMetrics, + #[cfg(feature = "metrics")] + metrics: crate::metrics::SparseStateTrieMetrics, } #[cfg(test)] @@ -52,6 +52,7 @@ impl Default for SparseStateTrie { revealed_storage_paths: Default::default(), retain_updates: false, account_rlp_buf: Vec::with_capacity(TRIE_ACCOUNT_RLP_MAX_SIZE), + #[cfg(feature = "metrics")] metrics: Default::default(), } } @@ -89,6 +90,7 @@ impl SparseStateTrie { revealed_storage_paths: Default::default(), retain_updates: false, account_rlp_buf: Vec::with_capacity(TRIE_ACCOUNT_RLP_MAX_SIZE), + #[cfg(feature = "metrics")] metrics: Default::default(), } } @@ -283,8 +285,11 @@ impl SparseStateTrie { ) -> SparseStateTrieResult<()> { let DecodedProofNodes { nodes, total_nodes, skipped_nodes, new_nodes } = decode_proof_nodes(account_subtree, &self.revealed_account_paths)?; - self.metrics.increment_total_account_nodes(total_nodes as u64); - self.metrics.increment_skipped_account_nodes(skipped_nodes as u64); + #[cfg(feature = "metrics")] + { + self.metrics.increment_total_account_nodes(total_nodes as u64); + self.metrics.increment_skipped_account_nodes(skipped_nodes as u64); + } let mut account_nodes = nodes.into_iter().peekable(); if let Some(root_node) = Self::validate_root_node_decoded(&mut account_nodes)? { @@ -334,8 +339,11 @@ impl SparseStateTrie { let DecodedProofNodes { nodes, total_nodes, skipped_nodes, new_nodes } = decode_proof_nodes(storage_subtree.subtree, revealed_nodes)?; - self.metrics.increment_total_storage_nodes(total_nodes as u64); - self.metrics.increment_skipped_storage_nodes(skipped_nodes as u64); + #[cfg(feature = "metrics")] + { + self.metrics.increment_total_storage_nodes(total_nodes as u64); + self.metrics.increment_skipped_storage_nodes(skipped_nodes as u64); + } let mut nodes = nodes.into_iter().peekable(); if let Some(root_node) = Self::validate_root_node_decoded(&mut nodes)? { @@ -594,6 +602,7 @@ impl SparseStateTrie { /// If the trie has not been revealed, this function reveals the root node and returns its hash. pub fn root(&mut self) -> SparseStateTrieResult { // record revealed node metrics + #[cfg(feature = "metrics")] self.metrics.record(); Ok(self.revealed_trie_mut()?.root()) @@ -602,6 +611,7 @@ impl SparseStateTrie { /// Returns sparse trie root and trie updates if the trie has been revealed. pub fn root_with_updates(&mut self) -> SparseStateTrieResult<(B256, TrieUpdates)> { // record revealed node metrics + #[cfg(feature = "metrics")] self.metrics.record(); let storage_tries = self.storage_trie_updates();