eth/downloader: fix timeout resurrection panic (#26652)
* common/prque, eth/downloader: fix timeout resurrection panic * common/prque: revert -1 hack for les, temporaryly!
This commit is contained in:
		
							parent
							
								
									da3c974c36
								
							
						
					
					
						commit
						3086c256c9
					
				| @ -280,13 +280,14 @@ func (d *Downloader) concurrentFetch(queue typedQueue, beaconMode bool) error { | |||||||
| 			// overloading it further.
 | 			// overloading it further.
 | ||||||
| 			delete(pending, req.Peer) | 			delete(pending, req.Peer) | ||||||
| 			stales[req.Peer] = req | 			stales[req.Peer] = req | ||||||
| 			delete(ordering, req) |  | ||||||
| 
 | 
 | ||||||
| 			timeouts.Pop() | 			timeouts.Pop() // Popping an item will reorder indices in `ordering`, delete after, otherwise will resurrect!
 | ||||||
| 			if timeouts.Size() > 0 { | 			if timeouts.Size() > 0 { | ||||||
| 				_, exp := timeouts.Peek() | 				_, exp := timeouts.Peek() | ||||||
| 				timeout.Reset(time.Until(time.Unix(0, -exp))) | 				timeout.Reset(time.Until(time.Unix(0, -exp))) | ||||||
| 			} | 			} | ||||||
|  | 			delete(ordering, req) | ||||||
|  | 
 | ||||||
| 			// New timeout potentially set if there are more requests pending,
 | 			// New timeout potentially set if there are more requests pending,
 | ||||||
| 			// reschedule the failed one to a free peer
 | 			// reschedule the failed one to a free peer
 | ||||||
| 			fails := queue.unreserve(req.Peer) | 			fails := queue.unreserve(req.Peer) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user