mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-15 16:33:47 +00:00
fix BlockEnd in case of err
This commit is contained in:
parent
d799c68159
commit
add825e9c9
3 changed files with 18 additions and 17 deletions
|
|
@ -160,7 +160,6 @@ type BlockchainLogger interface {
|
||||||
state.StateLogger
|
state.StateLogger
|
||||||
OnBlockStart(*types.Block)
|
OnBlockStart(*types.Block)
|
||||||
OnBlockEnd(td *big.Int, err error)
|
OnBlockEnd(td *big.Int, err error)
|
||||||
OnBlockValidationError(block *types.Block, err error)
|
|
||||||
OnGenesisBlock(*types.Block)
|
OnGenesisBlock(*types.Block)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1774,10 +1773,17 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
|
||||||
|
|
||||||
// Process block using the parent state as reference point
|
// Process block using the parent state as reference point
|
||||||
pstart := time.Now()
|
pstart := time.Now()
|
||||||
|
|
||||||
|
if bc.logger != nil {
|
||||||
|
bc.logger.OnBlockStart(block)
|
||||||
|
}
|
||||||
receipts, logs, usedGas, err := bc.processor.Process(block, statedb, bc.vmConfig)
|
receipts, logs, usedGas, err := bc.processor.Process(block, statedb, bc.vmConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
bc.reportBlock(block, receipts, err)
|
bc.reportBlock(block, receipts, err)
|
||||||
followupInterrupt.Store(true)
|
followupInterrupt.Store(true)
|
||||||
|
if bc.logger != nil {
|
||||||
|
bc.logger.OnBlockEnd(new(big.Int), err)
|
||||||
|
}
|
||||||
return it.index, err
|
return it.index, err
|
||||||
}
|
}
|
||||||
ptime := time.Since(pstart)
|
ptime := time.Since(pstart)
|
||||||
|
|
@ -1787,7 +1793,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
|
||||||
bc.reportBlock(block, receipts, err)
|
bc.reportBlock(block, receipts, err)
|
||||||
followupInterrupt.Store(true)
|
followupInterrupt.Store(true)
|
||||||
if bc.logger != nil {
|
if bc.logger != nil {
|
||||||
bc.logger.OnBlockValidationError(block, err)
|
bc.logger.OnBlockEnd(new(big.Int), err)
|
||||||
}
|
}
|
||||||
return it.index, err
|
return it.index, err
|
||||||
}
|
}
|
||||||
|
|
@ -1823,6 +1829,9 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
|
||||||
}
|
}
|
||||||
followupInterrupt.Store(true)
|
followupInterrupt.Store(true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if bc.logger != nil {
|
||||||
|
bc.logger.OnBlockEnd(new(big.Int), err)
|
||||||
|
}
|
||||||
return it.index, err
|
return it.index, err
|
||||||
}
|
}
|
||||||
// Update the metrics touched during block commit
|
// Update the metrics touched during block commit
|
||||||
|
|
@ -1841,6 +1850,12 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
|
||||||
dirty, _ := bc.triedb.Size()
|
dirty, _ := bc.triedb.Size()
|
||||||
stats.report(chain, it.index, dirty, setHead)
|
stats.report(chain, it.index, dirty, setHead)
|
||||||
|
|
||||||
|
if bc.logger != nil {
|
||||||
|
td := bc.GetTd(block.ParentHash(), block.NumberU64()-1)
|
||||||
|
td.Add(td, block.Difficulty())
|
||||||
|
bc.logger.OnBlockEnd(td, nil)
|
||||||
|
}
|
||||||
|
|
||||||
if !setHead {
|
if !setHead {
|
||||||
// After merge we expect few side chains. Simply count
|
// After merge we expect few side chains. Simply count
|
||||||
// all blocks the CL gives us for GC processing time
|
// all blocks the CL gives us for GC processing time
|
||||||
|
|
|
||||||
|
|
@ -68,17 +68,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg
|
||||||
gp = new(GasPool).AddGas(block.GasLimit())
|
gp = new(GasPool).AddGas(block.GasLimit())
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
if p.bc.logger != nil {
|
|
||||||
p.bc.logger.OnBlockStart(block)
|
|
||||||
defer func() {
|
|
||||||
var td *big.Int
|
|
||||||
if err == nil {
|
|
||||||
td = p.bc.GetTd(block.ParentHash(), block.NumberU64()-1)
|
|
||||||
td.Add(td, block.Difficulty())
|
|
||||||
}
|
|
||||||
p.bc.logger.OnBlockEnd(td, err)
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
// Mutate the block and state according to any hard-fork specs
|
// Mutate the block and state according to any hard-fork specs
|
||||||
if p.config.DAOForkSupport && p.config.DAOForkBlock != nil && p.config.DAOForkBlock.Cmp(block.Number()) == 0 {
|
if p.config.DAOForkSupport && p.config.DAOForkBlock != nil && p.config.DAOForkBlock.Cmp(block.Number()) == 0 {
|
||||||
misc.ApplyDAOHardFork(statedb)
|
misc.ApplyDAOHardFork(statedb)
|
||||||
|
|
|
||||||
|
|
@ -78,10 +78,6 @@ func (p *Printer) OnBlockEnd(td *big.Int, err error) {
|
||||||
fmt.Printf("OnBlockEnd: td=%v, err=%v\n", td, err)
|
fmt.Printf("OnBlockEnd: td=%v, err=%v\n", td, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Printer) OnBlockValidationError(block *types.Block, err error) {
|
|
||||||
fmt.Printf("OnBlockValidationError: b=%v, err=%v\n", block.NumberU64(), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *Printer) OnGenesisBlock(b *types.Block) {
|
func (p *Printer) OnGenesisBlock(b *types.Block) {
|
||||||
fmt.Printf("OnGenesisBlock: b=%v\n", b.NumberU64())
|
fmt.Printf("OnGenesisBlock: b=%v\n", b.NumberU64())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue