feat(engine): allow configuring tree to always use state root fallback (#16569)

This commit is contained in:
Federico Gimenez
2025-05-30 20:07:01 +02:00
committed by GitHub
parent 6b5a4b2a66
commit aecf5e321c
4 changed files with 35 additions and 3 deletions

View File

@@ -2077,7 +2077,9 @@ where
//
// See https://github.com/paradigmxyz/reth/issues/12688 for more details
let persisting_kind = self.persisting_kind_for(block.header());
let run_parallel_state_root = persisting_kind.can_run_parallel_state_root();
// don't run parallel if state root fallback is set
let run_parallel_state_root =
persisting_kind.can_run_parallel_state_root() && !self.config.state_root_fallback();
// use prewarming background task
let header = block.clone_sealed_header();
@@ -2215,8 +2217,13 @@ where
maybe_state_root
} else {
// fallback is to compute the state root regularly in sync
warn!(target: "engine::tree", block=?block_num_hash, ?persisting_kind, "Failed to compute state root in parallel");
self.metrics.block_validation.state_root_parallel_fallback_total.increment(1);
if self.config.state_root_fallback() {
debug!(target: "engine::tree", block=?block_num_hash, "Using state root fallback for testing");
} else {
warn!(target: "engine::tree", block=?block_num_hash, ?persisting_kind, "Failed to compute state root in parallel");
self.metrics.block_validation.state_root_parallel_fallback_total.increment(1);
}
let (root, updates) =
ensure_ok!(state_provider.state_root_with_updates(hashed_state.clone()));
(root, updates, root_time.elapsed())