diff --git a/src/Nethermind/Nethermind.Blockchain.Test/Receipts/PersistentReceiptStorageTests.cs b/src/Nethermind/Nethermind.Blockchain.Test/Receipts/PersistentReceiptStorageTests.cs index 0ac8d76f9da4..6f8d35d04b17 100644 --- a/src/Nethermind/Nethermind.Blockchain.Test/Receipts/PersistentReceiptStorageTests.cs +++ b/src/Nethermind/Nethermind.Blockchain.Test/Receipts/PersistentReceiptStorageTests.cs @@ -442,7 +442,7 @@ public async Task When_NewHeadBlock_Remove_TxIndex_OfRemovedBlock_Unless_ItsAlso } [Test] - public void When_NewHeadBlock_ClearOldTxIndex() + public void When_NewHeadBlock_ClearOldTxIndex_And_KeepsReceipts() { _receiptConfig.TxLookupLimit = 1000; CreateStorage(); @@ -466,6 +466,7 @@ public void When_NewHeadBlock_ClearOldTxIndex() () => _receiptsDb.GetColumnDb(ReceiptsColumns.Transactions)[receipts[0].TxHash!.Bytes], Is.Null.After(1000, 100) ); + Assert.That(_storage.HasBlock(receipts[0].BlockNumber, receipts[0].BlockHash!)); } private (Block block, TxReceipt[] receipts) PrepareBlock(Block? block = null, bool isFinalized = false, long? headNumber = null) diff --git a/src/Nethermind/Nethermind.Blockchain/Receipts/PersistentReceiptStorage.cs b/src/Nethermind/Nethermind.Blockchain/Receipts/PersistentReceiptStorage.cs index 4fb8d05f1ee2..5d5715278943 100644 --- a/src/Nethermind/Nethermind.Blockchain/Receipts/PersistentReceiptStorage.cs +++ b/src/Nethermind/Nethermind.Blockchain/Receipts/PersistentReceiptStorage.cs @@ -86,7 +86,7 @@ private void BlockTreeOnBlockAddedToMain(object? sender, BlockReplacementEventAr Block newOldTx = _blockTree.FindBlock(newMain.Number - _receiptConfig.TxLookupLimit.Value); if (newOldTx is not null) { - RemoveReceipts(newOldTx); + RemoveBlockTx(newOldTx); } } }); @@ -338,6 +338,11 @@ public void RemoveReceipts(Block block) GetBlockNumPrefixedKey(block.Number, block.Hash, blockNumPrefixed); _receiptsDb.Remove(blockNumPrefixed); + RemoveBlockTx(block); + } + + private void RemoveBlockTx(Block block) + { using IWriteBatch writeBatch = _transactionDb.StartWriteBatch(); foreach (Transaction tx in block.Transactions) {