From f36d349918926e53f62844e44bcb3257d97c11b7 Mon Sep 17 00:00:00 2001 From: Delweng Date: Thu, 17 Jul 2025 10:44:35 +0800 Subject: [PATCH] triedb/pathdb: avoid duplicate metadata reads (#32226) --- triedb/pathdb/history_reader.go | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/triedb/pathdb/history_reader.go b/triedb/pathdb/history_reader.go index 9471ab423d..8f72d4053e 100644 --- a/triedb/pathdb/history_reader.go +++ b/triedb/pathdb/history_reader.go @@ -122,19 +122,14 @@ type indexReaderWithLimitTag struct { } // newIndexReaderWithLimitTag constructs a index reader with indexing position. -func newIndexReaderWithLimitTag(db ethdb.KeyValueReader, state stateIdent) (*indexReaderWithLimitTag, error) { - // Read the last indexed ID before the index reader construction - metadata := loadIndexMetadata(db) - if metadata == nil { - return nil, errors.New("state history hasn't been indexed yet") - } +func newIndexReaderWithLimitTag(db ethdb.KeyValueReader, state stateIdent, limit uint64) (*indexReaderWithLimitTag, error) { r, err := newIndexReader(db, state) if err != nil { return nil, err } return &indexReaderWithLimitTag{ reader: r, - limit: metadata.Last, + limit: limit, db: db, }, nil } @@ -348,7 +343,7 @@ func (r *historyReader) read(state stateIdentQuery, stateID uint64, lastID uint6 // state retrieval ir, ok := r.readers[state.String()] if !ok { - ir, err = newIndexReaderWithLimitTag(r.disk, state.stateIdent) + ir, err = newIndexReaderWithLimitTag(r.disk, state.stateIdent, metadata.Last) if err != nil { return nil, err }