eth/tracers: avoid using blockCtx concurrently (#24286)
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							29cb5deea3
						
					
				
				
					commit
					015fde9a2c
				
			| @@ -592,11 +592,11 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac | |||||||
| 	if threads > len(txs) { | 	if threads > len(txs) { | ||||||
| 		threads = len(txs) | 		threads = len(txs) | ||||||
| 	} | 	} | ||||||
| 	blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) |  | ||||||
| 	blockHash := block.Hash() | 	blockHash := block.Hash() | ||||||
| 	for th := 0; th < threads; th++ { | 	for th := 0; th < threads; th++ { | ||||||
| 		pend.Add(1) | 		pend.Add(1) | ||||||
| 		go func() { | 		go func() { | ||||||
|  | 			blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) | ||||||
| 			defer pend.Done() | 			defer pend.Done() | ||||||
| 			// Fetch and execute the next transaction trace tasks | 			// Fetch and execute the next transaction trace tasks | ||||||
| 			for task := range jobs { | 			for task := range jobs { | ||||||
| @@ -617,6 +617,7 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac | |||||||
| 	} | 	} | ||||||
| 	// Feed the transactions into the tracers and return | 	// Feed the transactions into the tracers and return | ||||||
| 	var failed error | 	var failed error | ||||||
|  | 	blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) | ||||||
| 	for i, tx := range txs { | 	for i, tx := range txs { | ||||||
| 		// Send the trace task over for execution | 		// Send the trace task over for execution | ||||||
| 		jobs <- &txTraceTask{statedb: statedb.Copy(), index: i} | 		jobs <- &txTraceTask{statedb: statedb.Copy(), index: i} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user