diff options
author | obscuren <geffobscura@gmail.com> | 2015-05-26 21:35:51 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-05-26 21:35:51 +0800 |
commit | eae092759760341912dcc52d8287642b62abf889 (patch) | |
tree | 12e8662b2bf3a4a5aae7509f79a54e8b9325738a | |
parent | d74ee40c86fed3a48d88de1094efc0a2f464b659 (diff) | |
download | dexon-eae092759760341912dcc52d8287642b62abf889.tar.gz dexon-eae092759760341912dcc52d8287642b62abf889.tar.zst dexon-eae092759760341912dcc52d8287642b62abf889.zip |
core: prevent crash when last block fails
-rw-r--r-- | core/chain_manager.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/core/chain_manager.go b/core/chain_manager.go index 4fb7506e5..2b86bb794 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "math/big" + "os" "runtime" "sync" "time" @@ -233,14 +234,23 @@ func (bc *ChainManager) setLastState() { data, _ := bc.blockDb.Get([]byte("LastBlock")) if len(data) != 0 { block := bc.GetBlock(common.BytesToHash(data)) - bc.currentBlock = block - bc.lastBlockHash = block.Hash() - - // Set the last know difficulty (might be 0x0 as initial value, Genesis) - bc.td = common.BigD(bc.blockDb.LastKnownTD()) + if block != nil { + bc.currentBlock = block + bc.lastBlockHash = block.Hash() + } else { // TODO CLEAN THIS UP TMP CODE + block = bc.GetBlockByNumber(400000) + if block == nil { + fmt.Println("Fatal. LastBlock not found. Report this issue") + os.Exit(1) + } + bc.currentBlock = block + bc.lastBlockHash = block.Hash() + bc.insert(block) + } } else { bc.Reset() } + bc.td = bc.currentBlock.Td bc.currentGasLimit = CalcGasLimit(bc.currentBlock) if glog.V(logger.Info) { @@ -471,7 +481,7 @@ func (self *ChainManager) GetAncestors(block *types.Block, length int) (blocks [ } func (bc *ChainManager) setTotalDifficulty(td *big.Int) { - bc.blockDb.Put([]byte("LTD"), td.Bytes()) + //bc.blockDb.Put([]byte("LTD"), td.Bytes()) bc.td = td } |