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