From 4c23e7473db39b04acbb43d37f2b0fa425563bd0 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Wed, 12 Mar 2025 17:59:26 +0100 Subject: [PATCH] core/rawdb: add truncateTailNoHeads --- core/rawdb/freezer.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/core/rawdb/freezer.go b/core/rawdb/freezer.go index 984352f922..a021effc56 100644 --- a/core/rawdb/freezer.go +++ b/core/rawdb/freezer.go @@ -301,6 +301,31 @@ func (f *Freezer) TruncateHead(items uint64) (uint64, error) { return oitems, nil } +// TruncateTailNoHeads discards any recent data below the provided threshold number. +// Does not truncate the header and hash table +func (f *Freezer) TruncateTailNoHeads(tail uint64) (uint64, error) { + if f.readonly { + return 0, errReadOnly + } + f.writeLock.Lock() + defer f.writeLock.Unlock() + + old := f.tail.Load() + if old >= tail { + return old, nil + } + for kind, table := range f.tables { + if kind == ChainFreezerHeaderTable || kind == ChainFreezerHashTable { + continue + } + if err := table.truncateTail(tail); err != nil { + return 0, err + } + } + f.tail.Store(tail) + return old, nil +} + // TruncateTail discards any recent data below the provided threshold number. func (f *Freezer) TruncateTail(tail uint64) (uint64, error) { if f.readonly {