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