cmd/geth: fix legacy receipt detection for empty db (#25609)
This commit is contained in:
parent
c394c308e6
commit
6e6b5087f1
|
@ -175,12 +175,13 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) {
|
|||
if cfg.Eth.NetworkId == 1 && ghash == params.MainnetGenesisHash {
|
||||
firstIdx = 46147
|
||||
}
|
||||
isLegacy, _, err := dbHasLegacyReceipts(eth.ChainDb(), firstIdx)
|
||||
isLegacy, firstLegacy, err := dbHasLegacyReceipts(eth.ChainDb(), firstIdx)
|
||||
if err != nil {
|
||||
log.Error("Failed to check db for legacy receipts", "err", err)
|
||||
} else if isLegacy {
|
||||
stack.Close()
|
||||
utils.Fatalf("Database has receipts with a legacy format. Please run `geth db freezer-migrate`.")
|
||||
log.Error("Database has receipts with a legacy format", "firstLegacy", firstLegacy)
|
||||
utils.Fatalf("Aborting. Please run `geth db freezer-migrate`.")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -822,11 +822,15 @@ func dbHasLegacyReceipts(db ethdb.Database, firstIdx uint64) (bool, uint64, erro
|
|||
}
|
||||
}
|
||||
}
|
||||
// Is first non-empty receipt legacy?
|
||||
first, err := db.Ancient("receipts", firstIdx)
|
||||
if err != nil {
|
||||
return false, 0, err
|
||||
}
|
||||
// We looped over all receipts and they were all empty
|
||||
if bytes.Equal(first, emptyRLPList) {
|
||||
return false, 0, nil
|
||||
}
|
||||
// Is first non-empty receipt legacy?
|
||||
legacy, err = types.IsLegacyStoredReceipts(first)
|
||||
return legacy, firstIdx, err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue