Skip to content

Commit 6e6b508

Browse files
authored
cmd/geth: fix legacy receipt detection for empty db (#25609)
1 parent c394c30 commit 6e6b508

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

cmd/geth/config.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,12 +175,13 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) {
175175
if cfg.Eth.NetworkId == 1 && ghash == params.MainnetGenesisHash {
176176
firstIdx = 46147
177177
}
178-
isLegacy, _, err := dbHasLegacyReceipts(eth.ChainDb(), firstIdx)
178+
isLegacy, firstLegacy, err := dbHasLegacyReceipts(eth.ChainDb(), firstIdx)
179179
if err != nil {
180180
log.Error("Failed to check db for legacy receipts", "err", err)
181181
} else if isLegacy {
182182
stack.Close()
183-
utils.Fatalf("Database has receipts with a legacy format. Please run `geth db freezer-migrate`.")
183+
log.Error("Database has receipts with a legacy format", "firstLegacy", firstLegacy)
184+
utils.Fatalf("Aborting. Please run `geth db freezer-migrate`.")
184185
}
185186
}
186187

cmd/geth/dbcmd.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -822,11 +822,15 @@ func dbHasLegacyReceipts(db ethdb.Database, firstIdx uint64) (bool, uint64, erro
822822
}
823823
}
824824
}
825-
// Is first non-empty receipt legacy?
826825
first, err := db.Ancient("receipts", firstIdx)
827826
if err != nil {
828827
return false, 0, err
829828
}
829+
// We looped over all receipts and they were all empty
830+
if bytes.Equal(first, emptyRLPList) {
831+
return false, 0, nil
832+
}
833+
// Is first non-empty receipt legacy?
830834
legacy, err = types.IsLegacyStoredReceipts(first)
831835
return legacy, firstIdx, err
832836
}

0 commit comments

Comments
 (0)