From 86f6e8a4cb18af34b1f4f7db8ab5d15b6bcd0bd2 Mon Sep 17 00:00:00 2001 From: Alexey Shekhirin Date: Mon, 5 Jan 2026 16:35:40 +0000 Subject: [PATCH] fix(engine): do not create another cache for multiproof task --- .../engine/tree/src/tree/payload_processor/mod.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/engine/tree/src/tree/payload_processor/mod.rs b/crates/engine/tree/src/tree/payload_processor/mod.rs index 6f93947c69..8f00f7642b 100644 --- a/crates/engine/tree/src/tree/payload_processor/mod.rs +++ b/crates/engine/tree/src/tree/payload_processor/mod.rs @@ -294,7 +294,8 @@ where // spawn multi-proof task let parent_span = span.clone(); self.executor.spawn_blocking({ - let saved_cache = self.cache_for(parent_hash); + let saved_cache = + prewarm_handle.saved_cache.clone().unwrap_or_else(|| self.cache_for(parent_hash)); let cache = saved_cache.cache().clone(); let cache_metrics = saved_cache.metrics().clone(); move || { @@ -435,7 +436,7 @@ where let prewarm_ctx = PrewarmContext { env, evm_config: self.evm_config.clone(), - saved_cache, + saved_cache: saved_cache.clone(), provider: provider_builder, metrics: PrewarmMetrics::default(), terminate_execution: Arc::new(AtomicBool::new(false)), @@ -465,7 +466,12 @@ where }); } - CacheTaskHandle { cache, to_prewarm_task: Some(to_prewarm_task), cache_metrics } + CacheTaskHandle { + saved_cache, + cache, + to_prewarm_task: Some(to_prewarm_task), + cache_metrics, + } } /// Returns the cache for the given parent hash. @@ -692,6 +698,7 @@ impl PayloadHandle { /// prewarm task without cloning the expensive `BundleState`. #[derive(Debug)] pub(crate) struct CacheTaskHandle { + saved_cache: Option, /// The shared cache the task operates with. cache: Option, /// Metrics for the caches