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 | 	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
 | // 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
 | // on top of the block's parent state (given it exists) and will return wether it was
 | ||||||
| // successful or not.
 | // successful or not.
 | ||||||
|  | |||||||
| @ -322,7 +322,12 @@ func (self *ChainManager) Export(w io.Writer) error { | |||||||
| 	last := self.currentBlock.NumberU64() | 	last := self.currentBlock.NumberU64() | ||||||
| 
 | 
 | ||||||
| 	for nr := uint64(0); nr <= last; nr++ { | 	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 | 			return err | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -69,15 +69,16 @@ func printChain(bc *ChainManager) { | |||||||
| func testChain(chainB types.Blocks, bman *BlockProcessor) (*big.Int, error) { | func testChain(chainB types.Blocks, bman *BlockProcessor) (*big.Int, error) { | ||||||
| 	td := new(big.Int) | 	td := new(big.Int) | ||||||
| 	for _, block := range chainB { | 	for _, block := range chainB { | ||||||
| 		td2, _, err := bman.bc.processor.Process(block) | 		_, err := bman.bc.processor.Process(block) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			if IsKnownBlockErr(err) { | 			if IsKnownBlockErr(err) { | ||||||
| 				continue | 				continue | ||||||
| 			} | 			} | ||||||
| 			return nil, err | 			return nil, err | ||||||
| 		} | 		} | ||||||
| 		block.Td = td2 | 		parent := bman.bc.GetBlock(block.ParentHash()) | ||||||
| 		td = td2 | 		block.Td = CalculateTD(block, parent) | ||||||
|  | 		td = block.Td | ||||||
| 
 | 
 | ||||||
| 		bman.bc.mu.Lock() | 		bman.bc.mu.Lock() | ||||||
| 		{ | 		{ | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user