forked from cerc-io/plugeth
core: force block process & fixed chain manager test
This commit is contained in:
parent
97a9753f87
commit
72d065d491
@ -149,6 +149,20 @@ func (self *BlockProcessor) ApplyTransactions(coinbase *state.StateObject, state
|
||||
return receipts, err
|
||||
}
|
||||
|
||||
func (sm *BlockProcessor) RetryProcess(block *types.Block) (logs state.Logs, err error) {
|
||||
// Processing a blocks may never happen simultaneously
|
||||
sm.mutex.Lock()
|
||||
defer sm.mutex.Unlock()
|
||||
|
||||
header := block.Header()
|
||||
if !sm.bc.HasBlock(header.ParentHash) {
|
||||
return nil, ParentError(header.ParentHash)
|
||||
}
|
||||
parent := sm.bc.GetBlock(header.ParentHash)
|
||||
|
||||
return sm.processWithParent(block, parent)
|
||||
}
|
||||
|
||||
// Process block will attempt to process the given block's transactions and applies them
|
||||
// on top of the block's parent state (given it exists) and will return wether it was
|
||||
// successful or not.
|
||||
|
@ -322,7 +322,12 @@ func (self *ChainManager) Export(w io.Writer) error {
|
||||
last := self.currentBlock.NumberU64()
|
||||
|
||||
for nr := uint64(0); nr <= last; nr++ {
|
||||
if err := self.GetBlockByNumber(nr).EncodeRLP(w); err != nil {
|
||||
block := self.GetBlockByNumber(nr)
|
||||
if block == nil {
|
||||
return fmt.Errorf("export failed on #%d: not found", nr)
|
||||
}
|
||||
|
||||
if err := block.EncodeRLP(w); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -69,15 +69,16 @@ func printChain(bc *ChainManager) {
|
||||
func testChain(chainB types.Blocks, bman *BlockProcessor) (*big.Int, error) {
|
||||
td := new(big.Int)
|
||||
for _, block := range chainB {
|
||||
td2, _, err := bman.bc.processor.Process(block)
|
||||
_, err := bman.bc.processor.Process(block)
|
||||
if err != nil {
|
||||
if IsKnownBlockErr(err) {
|
||||
continue
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
block.Td = td2
|
||||
td = td2
|
||||
parent := bman.bc.GetBlock(block.ParentHash())
|
||||
block.Td = CalculateTD(block, parent)
|
||||
td = block.Td
|
||||
|
||||
bman.bc.mu.Lock()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user