|
64 | 64 | blockValidationTimer = metrics.NewRegisteredTimer("chain/validation", nil)
|
65 | 65 | blockExecutionTimer = metrics.NewRegisteredTimer("chain/execution", nil)
|
66 | 66 | blockWriteTimer = metrics.NewRegisteredTimer("chain/write", nil)
|
| 67 | + blockReorgAddMeter = metrics.NewRegisteredMeter("chain/reorg/drop", nil) |
| 68 | + blockReorgDropMeter = metrics.NewRegisteredMeter("chain/reorg/add", nil) |
67 | 69 |
|
68 | 70 | blockPrefetchExecuteTimer = metrics.NewRegisteredTimer("chain/prefetch/executes", nil)
|
69 | 71 | blockPrefetchInterruptMeter = metrics.NewRegisteredMeter("chain/prefetch/interrupts", nil)
|
@@ -1933,12 +1935,16 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error {
|
1933 | 1935 | }
|
1934 | 1936 | // Ensure the user sees large reorgs
|
1935 | 1937 | if len(oldChain) > 0 && len(newChain) > 0 {
|
1936 |
| - logFn := log.Debug |
| 1938 | + logFn := log.Info |
| 1939 | + msg := "Chain reorg detected" |
1937 | 1940 | if len(oldChain) > 63 {
|
| 1941 | + msg = "Large chain reorg detected" |
1938 | 1942 | logFn = log.Warn
|
1939 | 1943 | }
|
1940 |
| - logFn("Chain split detected", "number", commonBlock.Number(), "hash", commonBlock.Hash(), |
| 1944 | + logFn(msg, "number", commonBlock.Number(), "hash", commonBlock.Hash(), |
1941 | 1945 | "drop", len(oldChain), "dropfrom", oldChain[0].Hash(), "add", len(newChain), "addfrom", newChain[0].Hash())
|
| 1946 | + blockReorgAddMeter.Mark(int64(len(newChain))) |
| 1947 | + blockReorgDropMeter.Mark(int64(len(oldChain))) |
1942 | 1948 | } else {
|
1943 | 1949 | log.Error("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "newnum", newBlock.Number(), "newhash", newBlock.Hash())
|
1944 | 1950 | }
|
|
0 commit comments