core: log chain reorg/split metrics

This commit is contained in:
hackyminer 2019-01-10 18:21:16 +09:00
parent f9401ae011
commit ee841f6ac4
No known key found for this signature in database
GPG key ID: 46D453DDCA4B766F

View file

@ -51,6 +51,8 @@ var (
blockValidationTimer = metrics.NewRegisteredTimer("chain/validation", nil) blockValidationTimer = metrics.NewRegisteredTimer("chain/validation", nil)
blockExecutionTimer = metrics.NewRegisteredTimer("chain/execution", nil) blockExecutionTimer = metrics.NewRegisteredTimer("chain/execution", nil)
blockWriteTimer = metrics.NewRegisteredTimer("chain/write", nil) blockWriteTimer = metrics.NewRegisteredTimer("chain/write", nil)
blockReorgAddMeter = metrics.NewRegisteredMeter("chain/reorg/drop", nil)
blockReorgDropMeter = metrics.NewRegisteredMeter("chain/reorg/add", nil)
ErrNoGenesis = errors.New("Genesis not found in chain") ErrNoGenesis = errors.New("Genesis not found in chain")
) )
@ -1465,12 +1467,18 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error {
} }
// Ensure the user sees large reorgs // Ensure the user sees large reorgs
if len(oldChain) > 0 && len(newChain) > 0 { if len(oldChain) > 0 && len(newChain) > 0 {
logFn := log.Debug logFn := log.Info
msg := "Chain reorg detected"
if len(oldChain) > 63 { if len(oldChain) > 63 {
msg = "Large chain reorg detected"
logFn = log.Warn logFn = log.Warn
} }
logFn("Chain split detected", "number", commonBlock.Number(), "hash", commonBlock.Hash(), logFn(msg, "number", commonBlock.Number(), "hash", commonBlock.Hash(),
"drop", len(oldChain), "dropfrom", oldChain[0].Hash(), "add", len(newChain), "addfrom", newChain[0].Hash()) "drop", len(oldChain), "dropfrom", oldChain[0].Hash(), "add", len(newChain), "addfrom", newChain[0].Hash())
if len(oldChain) > 1 {
blockReorgAddMeter.Mark(int64(len(newChain)))
blockReorgDropMeter.Mark(int64(len(oldChain)))
}
} else { } else {
log.Error("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "newnum", newBlock.Number(), "newhash", newBlock.Hash()) log.Error("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "newnum", newBlock.Number(), "newhash", newBlock.Hash())
} }