diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-07-01 18:57:13 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-07-01 18:57:13 +0800 |
commit | bb418a43c1b9ebf9a32006652b405f8e1cb3acd2 (patch) | |
tree | 379d6ecbefce1d317ca2646a072cfa6879890dbe /cmd | |
parent | 2e5242f9bbbf8412fa5b6e94da942e69570d860d (diff) | |
parent | 29ab1fa8a50db8aa16c5d707f1cab7dc201a4053 (diff) | |
download | dexon-bb418a43c1b9ebf9a32006652b405f8e1cb3acd2.tar.gz dexon-bb418a43c1b9ebf9a32006652b405f8e1cb3acd2.tar.zst dexon-bb418a43c1b9ebf9a32006652b405f8e1cb3acd2.zip |
Merge pull request #1370 from obscuren/force-checkpoint
core, cmd/geth: recover by number
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/geth/main.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/cmd/geth/main.go b/cmd/geth/main.go index c46343a60..a7d3a73ef 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -39,6 +39,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/logger" + "github.com/ethereum/go-ethereum/logger/glog" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/rpc/codec" "github.com/ethereum/go-ethereum/rpc/comms" @@ -68,6 +69,15 @@ func init() { app.Action = run app.HideVersion = true // we have a command to print the version app.Commands = []cli.Command{ + { + Action: blockRecovery, + Name: "recover", + Usage: "attempts to recover a corrupted database by setting a new block head by number", + Description: ` +The recover commands will attempt to read out the last +block based on that. +`, + }, blocktestCommand, importCommand, exportCommand, @@ -439,6 +449,20 @@ func unlockAccount(ctx *cli.Context, am *accounts.Manager, account string) (pass return } +func blockRecovery(ctx *cli.Context) { + num := ctx.Args().First() + if len(ctx.Args()) < 1 { + glog.Fatal("recover requires block number") + } + + cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx) + ethereum, err := eth.New(cfg) + if err != nil { + utils.Fatalf("%v", err) + } + ethereum.ChainManager().Recover(common.String2Big(num).Uint64()) +} + func startEth(ctx *cli.Context, eth *eth.Ethereum) { // Start Ethereum itself |