eth/downloader: allow all timers to exit
This commit is contained in:
parent
8f24097836
commit
7cee2509c0
|
@ -197,12 +197,7 @@ func (d *Downloader) runStateSync(s *stateSync) *stateSync {
|
|||
}
|
||||
// Start a timer to notify the sync loop if the peer stalled.
|
||||
req.timer = time.AfterFunc(req.timeout, func() {
|
||||
select {
|
||||
case timeout <- req:
|
||||
case <-s.done:
|
||||
// Prevent leaking of timer goroutines in the unlikely case where a
|
||||
// timer is fired just before exiting runStateSync.
|
||||
}
|
||||
timeout <- req
|
||||
})
|
||||
active[req.peer.id] = req
|
||||
}
|
||||
|
@ -214,7 +209,6 @@ func (d *Downloader) runStateSync(s *stateSync) *stateSync {
|
|||
// are marked as idle and de facto _are_ idle.
|
||||
func (d *Downloader) spindownStateSync(active map[string]*stateReq, finished []*stateReq, timeout chan *stateReq, peerDrop chan *peerConnection) {
|
||||
log.Trace("State sync spinning down", "active", len(active), "finished", len(finished))
|
||||
|
||||
for len(active) > 0 {
|
||||
var (
|
||||
req *stateReq
|
||||
|
|
Loading…
Reference in New Issue