From 65c0ea433a8d8a47f09eb43fff758538d1ac11f6 Mon Sep 17 00:00:00 2001 From: healthykim Date: Mon, 29 Jun 2026 20:16:34 +0200 Subject: [PATCH] core/rawdb: add resetTo() for empty table --- core/rawdb/freezer_table.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/rawdb/freezer_table.go b/core/rawdb/freezer_table.go index c770e89989..bca505925f 100644 --- a/core/rawdb/freezer_table.go +++ b/core/rawdb/freezer_table.go @@ -611,9 +611,17 @@ func (t *freezerTable) truncateHead(items uint64) error { if existing <= items { return nil } - if items < t.itemHidden.Load() { - return errors.New("truncation below tail") + + hidden := t.itemHidden.Load() + + if items < hidden { + if existing == hidden { + // Empty table means that it is newly added. Its tail would be + // at the head, so we have to align the table down to the new head. + return t.resetTo(items) + } } + // We need to truncate, save the old size for metrics tracking oldSize, err := t.sizeNolock() if err != nil {