diff --git a/src/Nethermind/Nethermind.Xdc/XdcPool.cs b/src/Nethermind/Nethermind.Xdc/XdcPool.cs index a58495fc31cd..24a06bec1f8e 100644 --- a/src/Nethermind/Nethermind.Xdc/XdcPool.cs +++ b/src/Nethermind/Nethermind.Xdc/XdcPool.cs @@ -35,11 +35,24 @@ public void EndRound(ulong round) { using var lockRelease = _lock.Acquire(); { + List<(ulong Round, Hash256 Hash)>? keysToRemove = null; foreach (var key in _items.Keys) { - if (key.Round <= round && _items.Remove(key, out ArrayPoolList list)) + if (key.Round <= round) { - list?.Dispose(); + keysToRemove ??= new List<(ulong, Hash256)>(); + keysToRemove.Add(key); + } + } + + if (keysToRemove is not null) + { + foreach (var key in keysToRemove) + { + if (_items.Remove(key, out ArrayPoolList list)) + { + list?.Dispose(); + } } } }