diff --git a/crates/storage/provider/src/providers/database/provider.rs b/crates/storage/provider/src/providers/database/provider.rs index af644a47a9b..6154336f6f9 100644 --- a/crates/storage/provider/src/providers/database/provider.rs +++ b/crates/storage/provider/src/providers/database/provider.rs @@ -522,6 +522,10 @@ impl DatabaseProvider = None; + for (i, block) in blocks.iter().enumerate() { let recovered_block = block.recovered_block(); @@ -556,12 +560,23 @@ impl DatabaseProvider acc.extend_ref(&trie_data.trie_updates), + None => accumulated_trie_updates = Some((*trie_data.trie_updates).clone()), + } timings.write_trie_updates += start.elapsed(); } } + // Write all accumulated trie updates in a single batch + if let Some(trie_updates) = &accumulated_trie_updates { + let start = Instant::now(); + self.write_trie_updates_sorted(trie_updates)?; + timings.write_trie_updates += start.elapsed(); + } + // Full mode: update history indices if save_mode.with_state() { let start = Instant::now();