diff --git a/crates/chain-state/src/deferred_trie.rs b/crates/chain-state/src/deferred_trie.rs index 1b4a3d43a3..479c86cad5 100644 --- a/crates/chain-state/src/deferred_trie.rs +++ b/crates/chain-state/src/deferred_trie.rs @@ -206,11 +206,33 @@ impl DeferredTrieData { Default::default(), // prefix_sets are per-block, not cumulative ); // Only trigger COW clone if there's actually data to add. - if !sorted_hashed_state.is_empty() { - Arc::make_mut(&mut overlay.state).extend_ref_and_sort(&sorted_hashed_state); + #[cfg(feature = "rayon")] + { + rayon::join( + || { + if !sorted_hashed_state.is_empty() { + Arc::make_mut(&mut overlay.state) + .extend_ref_and_sort(&sorted_hashed_state); + } + }, + || { + if !sorted_trie_updates.is_empty() { + Arc::make_mut(&mut overlay.nodes) + .extend_ref_and_sort(&sorted_trie_updates); + } + }, + ); } - if !sorted_trie_updates.is_empty() { - Arc::make_mut(&mut overlay.nodes).extend_ref_and_sort(&sorted_trie_updates); + #[cfg(not(feature = "rayon"))] + { + if !sorted_hashed_state.is_empty() { + Arc::make_mut(&mut overlay.state) + .extend_ref_and_sort(&sorted_hashed_state); + } + if !sorted_trie_updates.is_empty() { + Arc::make_mut(&mut overlay.nodes) + .extend_ref_and_sort(&sorted_trie_updates); + } } overlay }