diff --git a/core/rawdb/bor_receipts.go b/core/rawdb/bor_receipts.go index b34fac9c617a829ff1dcd5fba0ad6d29336770db..ba186a0af7b653a4a3d091ebdfca949e769a1690 100644 --- a/core/rawdb/bor_receipts.go +++ b/core/rawdb/bor_receipts.go @@ -5,6 +5,7 @@ import ( "github.com/ledgerwatch/erigon-lib/kv" "github.com/ledgerwatch/erigon/common" + "github.com/ledgerwatch/erigon/common/dbutils" "github.com/ledgerwatch/erigon/core/types" "github.com/ledgerwatch/erigon/rlp" "github.com/ledgerwatch/log/v3" @@ -147,3 +148,13 @@ func ReadBorTransaction(db kv.Tx, hash common.Hash) (*types.Transaction, common. var tx types.Transaction = types.NewBorTransaction() return &tx, blockHash, *blockNumber, uint64(bodyForStorage.TxAmount), nil } + +// TruncateBorReceipts removes all bor receipt for given block number or newer +func TruncateBorReceipts(db kv.RwTx, number uint64) error { + if err := db.ForEach(kv.BorReceipts, dbutils.EncodeBlockNumber(number), func(k, _ []byte) error { + return db.Delete(kv.BorReceipts, k, nil) + }); err != nil { + return err + } + return nil +} diff --git a/eth/stagedsync/stage_execute.go b/eth/stagedsync/stage_execute.go index 08f8aaf3d3af4859c67310477bba75782dd170bc..4f166536c1e758c1af50c8fabbf7a634f64d66e4 100644 --- a/eth/stagedsync/stage_execute.go +++ b/eth/stagedsync/stage_execute.go @@ -520,10 +520,13 @@ func unwindExecutionStage(u *UnwindState, s *StageState, tx kv.RwTx, quit <-chan } if err := rawdb.TruncateReceipts(tx, u.UnwindPoint+1); err != nil { - return fmt.Errorf("walking receipts: %w", err) + return fmt.Errorf("truncate receipts: %w", err) + } + if err := rawdb.TruncateBorReceipts(tx, u.UnwindPoint+1); err != nil { + return fmt.Errorf("truncate bor receipts: %w", err) } if err := rawdb.DeleteNewerEpochs(tx, u.UnwindPoint+1); err != nil { - return fmt.Errorf("walking epoch: %w", err) + return fmt.Errorf("delete newer epochs: %w", err) } // Truncate CallTraceSet