mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 20:56:42 +00:00
cmd, eth: implement flag delete-all-bad-blocks
This commit is contained in:
parent
5e6f7374de
commit
dff7741049
5 changed files with 31 additions and 1 deletions
|
|
@ -51,6 +51,7 @@ func main() {
|
|||
utils.HoodiFlag,
|
||||
utils.BlsyncApiFlag,
|
||||
utils.BlsyncJWTSecretFlag,
|
||||
utils.DeleteAllBadBlocksFlag,
|
||||
},
|
||||
debug.Flags,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -669,6 +669,11 @@ var (
|
|||
}
|
||||
|
||||
// MISC settings
|
||||
DeleteAllBadBlocksFlag = &cli.BoolFlag{
|
||||
Name: "delete-all-bad-blocks",
|
||||
Usage: "Delete all bad blocks in the database",
|
||||
Category: flags.MiscCategory,
|
||||
}
|
||||
SyncTargetFlag = &cli.StringFlag{
|
||||
Name: "synctarget",
|
||||
Usage: `Hash of the block to full sync to (dev testing feature)`,
|
||||
|
|
@ -1606,7 +1611,9 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
|||
// Avoid conflicting network flags, don't allow network id override on preset networks
|
||||
flags.CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag, HoodiFlag, NetworkIdFlag, OverrideGenesisFlag)
|
||||
flags.CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer
|
||||
|
||||
if ctx.Bool(DeleteAllBadBlocksFlag.Name) {
|
||||
cfg.DeleteAllBadBlocks = true
|
||||
}
|
||||
// Set configurations from CLI flags
|
||||
setEtherbase(ctx, cfg)
|
||||
setGPO(ctx, &cfg.GPO)
|
||||
|
|
|
|||
|
|
@ -827,6 +827,13 @@ func WriteBadBlock(db ethdb.KeyValueStore, block *types.Block) {
|
|||
}
|
||||
}
|
||||
|
||||
// DeleteBadBlocks deletes all the bad blocks from the database
|
||||
func DeleteBadBlocks(db ethdb.KeyValueWriter) {
|
||||
if err := db.Delete(badBlockKey); err != nil {
|
||||
log.Crit("Failed to delete bad blocks", "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
// ReadHeadHeader returns the current canonical head header.
|
||||
func ReadHeadHeader(db ethdb.Reader) *types.Header {
|
||||
headHeaderHash := ReadHeadHeaderHash(db)
|
||||
|
|
|
|||
|
|
@ -220,6 +220,20 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) {
|
|||
rawdb.WriteDatabaseVersion(chainDb, core.BlockChainVersion)
|
||||
}
|
||||
}
|
||||
badBlocks := rawdb.ReadAllBadBlocks(chainDb)
|
||||
log.Info("Bad blocks in db", "count", len(badBlocks))
|
||||
for i, block := range badBlocks {
|
||||
log.Info("Bad block in db", "i", i, "number", block.Number(), "hash", block.Hash().Hex())
|
||||
}
|
||||
if config.DeleteAllBadBlocks {
|
||||
if len(badBlocks) == 0 {
|
||||
log.Warn("No bad blocks in db to delete")
|
||||
} else {
|
||||
rawdb.DeleteBadBlocks(chainDb)
|
||||
log.Info(fmt.Sprintf("Deleted %d bad blocks in db", len(badBlocks)))
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
options = &core.BlockChainConfig{
|
||||
TrieCleanLimit: config.TrieCleanCache,
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ type Config struct {
|
|||
|
||||
// Database options
|
||||
SkipBcVersionCheck bool `toml:"-"`
|
||||
DeleteAllBadBlocks bool `toml:"-"`
|
||||
DatabaseHandles int `toml:"-"`
|
||||
DatabaseCache int
|
||||
DatabaseFreezer string
|
||||
|
|
|
|||
Loading…
Reference in a new issue