diff --git a/core/rawdb/accessors_chain.go b/core/rawdb/accessors_chain.go index b3fb1f53ff1ebafd61d1f86dd6c784c126295e04..4c6a1e646ce8acb617f787d7dfed78543803c401 100644 --- a/core/rawdb/accessors_chain.go +++ b/core/rawdb/accessors_chain.go @@ -1100,7 +1100,7 @@ func min(a, b uint64) uint64 { return b } -// DeleteAncientBlocks - delete old block after moving it to snapshots. +// DeleteAncientBlocks - delete [1, to) old blocks after moving it to snapshots. // keeps genesis in db: [1, to) // doesn't delete Reciepts // doesn't delete Canonical markers @@ -1117,15 +1117,15 @@ func DeleteAncientBlocks(db kv.RwTx, blockTo uint64, blocksDeleteLimit int) erro if err != nil { return err } - firstBlock := binary.BigEndian.Uint64(k) - if firstBlock == 0 { // keep genesis in DB + firstNonGenesisInDB := binary.BigEndian.Uint64(k) + if firstNonGenesisInDB == 0 { // keep genesis in DB k, _, err := c.Next() if err != nil { return err } - firstBlock = binary.BigEndian.Uint64(k) + firstNonGenesisInDB = binary.BigEndian.Uint64(k) } - stopAtBlock = min(blockTo, firstBlock+uint64(blocksDeleteLimit)) + stopAtBlock = min(blockTo, firstNonGenesisInDB+uint64(blocksDeleteLimit)) } for k, _, err := c.Current(); k != nil; k, _, err = c.Next() { if err != nil { @@ -1133,7 +1133,7 @@ func DeleteAncientBlocks(db kv.RwTx, blockTo uint64, blocksDeleteLimit int) erro } n := binary.BigEndian.Uint64(k) - if n > stopAtBlock { + if n >= stopAtBlock { break }