From 0712715cb0dfd8fec905c4071469e318d7bac043 Mon Sep 17 00:00:00 2001 From: jimmyshi <417711026@qq.com> Date: Mon, 27 Oct 2025 17:16:14 +0800 Subject: [PATCH 1/2] filtermaps support history pruning cutoff point --- core/filtermaps/filtermaps.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/filtermaps/filtermaps.go b/core/filtermaps/filtermaps.go index fede54df574..df0eaebe245 100644 --- a/core/filtermaps/filtermaps.go +++ b/core/filtermaps/filtermaps.go @@ -393,7 +393,7 @@ func (f *FilterMaps) init() error { bestIdx, bestLen = idx, max } } - var initBlockNumber uint64 + initBlockNumber := f.historyCutoff if bestLen > 0 { initBlockNumber = checkpoints[bestIdx][bestLen-1].BlockNumber } @@ -503,7 +503,7 @@ func (f *FilterMaps) getLogByLvIndex(lvIndex uint64) (*types.Log, error) { if err != nil { return nil, fmt.Errorf("failed to retrieve last block of map %d containing searched log value index %d: %v", mapIndex, lvIndex, err) } - var firstBlockNumber uint64 + firstBlockNumber := f.historyCutoff if mapIndex > 0 { firstBlockNumber, _, err = f.getLastBlockOfMap(mapIndex - 1) if err != nil { @@ -763,7 +763,7 @@ func (f *FilterMaps) deleteTailEpoch(epoch uint32) (bool, error) { if err != nil { return false, fmt.Errorf("failed to retrieve last block of deleted epoch %d: %v", epoch, err) } - var firstBlock uint64 + firstBlock := f.historyCutoff firstMap := f.firstEpochMap(epoch) if epoch > 0 { firstBlock, _, err = f.getLastBlockOfMap(firstMap - 1) From d39ffe687328a96bf08bc78493dda2ebe2a5287c Mon Sep 17 00:00:00 2001 From: jimmyshi <417711026@qq.com> Date: Mon, 27 Oct 2025 17:17:24 +0800 Subject: [PATCH 2/2] filtermaps support history pruning cutoff point --- core/filtermaps/map_renderer.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/filtermaps/map_renderer.go b/core/filtermaps/map_renderer.go index e1284a38297..673677af272 100644 --- a/core/filtermaps/map_renderer.go +++ b/core/filtermaps/map_renderer.go @@ -161,13 +161,13 @@ func (f *FilterMaps) lastCanonicalSnapshotOfMap(mapIndex uint32) *renderedMap { // and starting log value pointer of the last block is also returned. func (f *FilterMaps) lastCanonicalMapBoundaryBefore(renderBefore uint32) (nextMap uint32, startBlock, startLvPtr uint64, err error) { if !f.indexedRange.initialized { - return 0, 0, 0, nil + return 0, f.historyCutoff, 0, nil } mapIndex := renderBefore for { var ok bool if mapIndex, ok = f.lastMapBoundaryBefore(mapIndex); !ok { - return 0, 0, 0, nil + return 0, f.historyCutoff, 0, nil } lastBlock, lastBlockId, err := f.getLastBlockOfMap(mapIndex) if err != nil { @@ -229,7 +229,7 @@ func (f *FilterMaps) loadHeadSnapshot() error { if err != nil { return fmt.Errorf("failed to retrieve last block of head snapshot map %d: %v", f.indexedRange.maps.Last(), err) } - var firstBlock uint64 + var firstBlock uint64 = f.historyCutoff if f.indexedRange.maps.AfterLast() > 1 { prevLastBlock, _, err := f.getLastBlockOfMap(f.indexedRange.maps.Last() - 1) if err != nil {