From 15350328794c201c5a80c9537d7369448298cf54 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Mon, 27 May 2024 15:10:59 +0800 Subject: [PATCH] fix: fix inspect database error --- core/rawdb/database.go | 15 ++++++++++++--- core/rawdb/table.go | 4 ++++ ethdb/database.go | 1 + ethdb/remotedb/remotedb.go | 4 ++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/core/rawdb/database.go b/core/rawdb/database.go index cfd9345c03..921b6123d1 100644 --- a/core/rawdb/database.go +++ b/core/rawdb/database.go @@ -122,6 +122,10 @@ func (frdb *freezerdb) SetBlockStore(block ethdb.Database) { frdb.blockStore = block } +func (frdb *freezerdb) HasSeparateBlockStore() bool { + return frdb.blockStore != nil +} + // Freeze is a helper method used for external testing to trigger and block until // a freeze cycle completes, without having to sleep for a minute to trigger the // automatic background run. @@ -219,6 +223,10 @@ func (db *nofreezedb) SetBlockStore(block ethdb.Database) { db.blockStore = block } +func (db *nofreezedb) HasSeparateBlockStore() bool { + return db.blockStore != nil +} + func (db *nofreezedb) BlockStoreReader() ethdb.Reader { if db.blockStore != nil { return db.blockStore @@ -598,13 +606,14 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte) error { it := db.NewIterator(keyPrefix, keyStart) defer it.Release() - var trieIter ethdb.Iterator - var blockIter ethdb.Iterator + var trieIter ethdb.Iterator // traverse state data if multi-database has been enabled + var blockIter ethdb.Iterator // traverse block data if multi-database has been enabled if db.StateStore() != nil { trieIter = db.StateStore().NewIterator(keyPrefix, nil) defer trieIter.Release() } - if db.BlockStore() != db { + + if db.HasSeparateBlockStore() { blockIter = db.BlockStore().NewIterator(keyPrefix, nil) defer blockIter.Release() } diff --git a/core/rawdb/table.go b/core/rawdb/table.go index a6233406ef..a78f410d55 100644 --- a/core/rawdb/table.go +++ b/core/rawdb/table.go @@ -43,6 +43,10 @@ func (t *table) SetBlockStore(block ethdb.Database) { panic("not implement") } +func (t *table) HasSeparateBlockStore() bool { + panic("not implement") +} + // NewTable returns a database object that prefixes all keys with a given string. func NewTable(db ethdb.Database, prefix string) ethdb.Database { return &table{ diff --git a/ethdb/database.go b/ethdb/database.go index e1249d0a18..9bb468a6aa 100644 --- a/ethdb/database.go +++ b/ethdb/database.go @@ -160,6 +160,7 @@ type StateStoreReader interface { type BlockStore interface { BlockStore() Database SetBlockStore(block Database) + HasSeparateBlockStore() bool } type BlockStoreReader interface { diff --git a/ethdb/remotedb/remotedb.go b/ethdb/remotedb/remotedb.go index 705816ad93..6fe0432e57 100644 --- a/ethdb/remotedb/remotedb.go +++ b/ethdb/remotedb/remotedb.go @@ -44,6 +44,10 @@ func (db *Database) BlockStore() ethdb.Database { return db } +func (db *Database) HasSeparateBlockStore() bool { + return false +} + func (db *Database) SetBlockStore(block ethdb.Database) { panic("not supported") }