From 9d59a140d661789d119cc94602bfc7c2a4eee2ca Mon Sep 17 00:00:00 2001 From: joeycli <1297465889@qq.com> Date: Mon, 25 Jul 2022 09:56:17 +0800 Subject: [PATCH] [R4R]fix: tools broken because of writting metadata when open a readyonly db (#1013) * freezer batch compatible offline prunblock command adjust pruneblock local var * not write metadata to db when open db with readyonly --- core/rawdb/accessors_metadata.go | 10 +++++----- core/rawdb/database.go | 8 ++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/core/rawdb/accessors_metadata.go b/core/rawdb/accessors_metadata.go index 6aa4427899..f6eccadd52 100644 --- a/core/rawdb/accessors_metadata.go +++ b/core/rawdb/accessors_metadata.go @@ -193,7 +193,7 @@ func ReadOffSetOfCurrentAncientFreezer(db ethdb.KeyValueReader) uint64 { // WriteOffSetOfCurrentAncientFreezer write prune block start func WriteOffSetOfCurrentAncientFreezer(db ethdb.KeyValueWriter, offset uint64) { if err := db.Put(offSetOfCurrentAncientFreezer, new(big.Int).SetUint64(offset).Bytes()); err != nil { - log.Crit("Failed to store offSetOfAncientFreezer", "err", err) + log.Crit("Failed to store the current offset of ancient", "err", err) } } @@ -209,7 +209,7 @@ func ReadOffSetOfLastAncientFreezer(db ethdb.KeyValueReader) uint64 { // WriteOffSetOfLastAncientFreezer wirte before prune block start func WriteOffSetOfLastAncientFreezer(db ethdb.KeyValueWriter, offset uint64) { if err := db.Put(offSetOfLastAncientFreezer, new(big.Int).SetUint64(offset).Bytes()); err != nil { - log.Crit("Failed to store offSetOfAncientFreezer", "err", err) + log.Crit("Failed to store the old offset of ancient", "err", err) } } @@ -225,7 +225,7 @@ func ReadFrozenOfAncientFreezer(db ethdb.KeyValueReader) uint64 { // WriteFrozenOfAncientFreezer write freezer block number func WriteFrozenOfAncientFreezer(db ethdb.KeyValueWriter, frozen uint64) { if err := db.Put(frozenOfAncientDBKey, new(big.Int).SetUint64(frozen).Bytes()); err != nil { - log.Crit("Failed to store offSetOfAncientFreezer", "err", err) + log.Crit("Failed to store the ancient frozen number", "err", err) } } @@ -241,7 +241,7 @@ func ReadSafePointBlockNumber(db ethdb.KeyValueReader) uint64 { // WriteSafePointBlockNumber write the number of block that roothash save to disk func WriteSafePointBlockNumber(db ethdb.KeyValueWriter, number uint64) { if err := db.Put(LastSafePointBlockKey, new(big.Int).SetUint64(number).Bytes()); err != nil { - log.Crit("Failed to store offSetOfAncientFreezer", "err", err) + log.Crit("Failed to store safe point of block number", "err", err) } } @@ -257,6 +257,6 @@ func ReadAncientType(db ethdb.KeyValueReader) uint64 { // WriteAncientType write freezer type func WriteAncientType(db ethdb.KeyValueWriter, flag uint64) { if err := db.Put(pruneAncientKey, new(big.Int).SetUint64(flag).Bytes()); err != nil { - log.Crit("Failed to store offSetOfAncientFreezer", "err", err) + log.Crit("Failed to store prune ancient type", "err", err) } } diff --git a/core/rawdb/database.go b/core/rawdb/database.go index e98494baec..aef68d5750 100644 --- a/core/rawdb/database.go +++ b/core/rawdb/database.go @@ -198,7 +198,9 @@ func NewDatabaseWithFreezer(db ethdb.KeyValueStore, freezer string, namespace st } go frdb.freeze() - WriteAncientType(db, PruneFreezerType) + if !readonly { + WriteAncientType(db, PruneFreezerType) + } return &freezerdb{ KeyValueStore: db, AncientStore: frdb, @@ -296,7 +298,9 @@ func NewDatabaseWithFreezer(db ethdb.KeyValueStore, freezer string, namespace st } } // no prune ancinet start success - WriteAncientType(db, EntireFreezerType) + if !readonly { + WriteAncientType(db, EntireFreezerType) + } // Freezer is consistent with the key-value database, permit combining the two if !disableFreeze && !frdb.readonly { frdb.wg.Add(1)