From 776fa511bea8471927a7bbf2ed75526607ac97fc Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sat, 8 Jun 2024 00:58:01 +0100 Subject: [PATCH] Handle parallel withdrawals in pre-warmer --- .../Processing/BlockCachePreWarmer.cs | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/Nethermind/Nethermind.Consensus/Processing/BlockCachePreWarmer.cs b/src/Nethermind/Nethermind.Consensus/Processing/BlockCachePreWarmer.cs index db3a33ed5ab..80861c37636 100644 --- a/src/Nethermind/Nethermind.Consensus/Processing/BlockCachePreWarmer.cs +++ b/src/Nethermind/Nethermind.Consensus/Processing/BlockCachePreWarmer.cs @@ -72,19 +72,24 @@ void WarmupWithdrawals(ParallelOptions parallelOptions, IReleaseSpec spec, Block { if (spec.WithdrawalsEnabled && block.Withdrawals is not null) { - ReadOnlyTxProcessingEnv env = _envPool.Get(); - try - { - using IReadOnlyTransactionProcessor transactionProcessor = env.Build(stateRoot); - Parallel.For(0, block.Withdrawals.Length, parallelOptions, - i => env.StateProvider.WarmUp(block.Withdrawals[i].Address) - ); - } - finally - { - env.Reset(); - _envPool.Return(env); - } + Parallel.For(0, block.Withdrawals.Length, parallelOptions, + i => + { + ReadOnlyTxProcessingEnv env = _envPool.Get(); + try + { + env.StateProvider.WarmUp(block.Withdrawals[i].Address); + } + catch (Exception ex) + { + if (_logger.IsDebug) _logger.Error($"Error pre-warming withdrawal {i}", ex); + } + finally + { + env.Reset(); + _envPool.Return(env); + } + }); } }