forked from cerc-io/plugeth
		
	core: ensure state exists for prefetcher (#20627)
This commit is contained in:
		
							parent
							
								
									38d1b0cba2
								
							
						
					
					
						commit
						855690523a
					
				@ -1654,18 +1654,17 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er
 | 
				
			|||||||
		// If we have a followup block, run that against the current state to pre-cache
 | 
							// If we have a followup block, run that against the current state to pre-cache
 | 
				
			||||||
		// transactions and probabilistically some of the account/storage trie nodes.
 | 
							// transactions and probabilistically some of the account/storage trie nodes.
 | 
				
			||||||
		var followupInterrupt uint32
 | 
							var followupInterrupt uint32
 | 
				
			||||||
 | 
					 | 
				
			||||||
		if !bc.cacheConfig.TrieCleanNoPrefetch {
 | 
							if !bc.cacheConfig.TrieCleanNoPrefetch {
 | 
				
			||||||
			if followup, err := it.peek(); followup != nil && err == nil {
 | 
								if followup, err := it.peek(); followup != nil && err == nil {
 | 
				
			||||||
				go func(start time.Time) {
 | 
									throwaway, _ := state.New(parent.Root, bc.stateCache)
 | 
				
			||||||
					throwaway, _ := state.New(parent.Root, bc.stateCache)
 | 
									go func(start time.Time, followup *types.Block, throwaway *state.StateDB, interrupt *uint32) {
 | 
				
			||||||
					bc.prefetcher.Prefetch(followup, throwaway, bc.vmConfig, &followupInterrupt)
 | 
										bc.prefetcher.Prefetch(followup, throwaway, bc.vmConfig, interrupt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					blockPrefetchExecuteTimer.Update(time.Since(start))
 | 
										blockPrefetchExecuteTimer.Update(time.Since(start))
 | 
				
			||||||
					if atomic.LoadUint32(&followupInterrupt) == 1 {
 | 
										if atomic.LoadUint32(interrupt) == 1 {
 | 
				
			||||||
						blockPrefetchInterruptMeter.Mark(1)
 | 
											blockPrefetchInterruptMeter.Mark(1)
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}(time.Now())
 | 
									}(time.Now(), followup, throwaway, &followupInterrupt)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// Process block using the parent state as reference point
 | 
							// Process block using the parent state as reference point
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user