aboutsummaryrefslogtreecommitdiffstats
path: root/core/chain_manager.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-04-19 03:23:42 +0800
committerobscuren <geffobscura@gmail.com>2015-04-19 03:23:42 +0800
commit84f1af6413b172c7c88d567e8b9033197196b5bd (patch)
treeac11ac9b4c3a0b7d1411f114994fa4fd83a7b238 /core/chain_manager.go
parent525cefa37aafbc42de8911344c9853d950c06ded (diff)
downloaddexon-84f1af6413b172c7c88d567e8b9033197196b5bd.tar.gz
dexon-84f1af6413b172c7c88d567e8b9033197196b5bd.tar.zst
dexon-84f1af6413b172c7c88d567e8b9033197196b5bd.zip
core: merge using equal block numbers rather than the current block
Diffstat (limited to 'core/chain_manager.go')
-rw-r--r--core/chain_manager.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/chain_manager.go b/core/chain_manager.go
index 7e792864a..8371a129d 100644
--- a/core/chain_manager.go
+++ b/core/chain_manager.go
@@ -366,6 +366,12 @@ func (self *ChainManager) GetBlockByNumber(num uint64) *types.Block {
self.mu.RLock()
defer self.mu.RUnlock()
+ return self.getBlockByNumber(num)
+
+}
+
+// non blocking version
+func (self *ChainManager) getBlockByNumber(num uint64) *types.Block {
key, _ := self.blockDb.Get(append(blockNumPre, big.NewInt(int64(num)).Bytes()...))
if len(key) == 0 {
return nil
@@ -507,7 +513,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
glog.Infof("Split detected. New head #%v (%x) TD=%v, was #%v (%x) TD=%v\n", block.Header().Number, hash[:4], td, cblock.Header().Number, chash[:4], self.td)
}
// during split we merge two different chains and create the new canonical chain
- self.merge(cblock, block)
+ self.merge(self.getBlockByNumber(block.NumberU64()), block)
queue[i] = ChainSplitEvent{block, logs}
queueEvent.splitCount++