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.
|
// Start a timer to notify the sync loop if the peer stalled.
|
||||||
req.timer = time.AfterFunc(req.timeout, func() {
|
req.timer = time.AfterFunc(req.timeout, func() {
|
||||||
select {
|
timeout <- req
|
||||||
case timeout <- req:
|
|
||||||
case <-s.done:
|
|
||||||
// Prevent leaking of timer goroutines in the unlikely case where a
|
|
||||||
// timer is fired just before exiting runStateSync.
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
active[req.peer.id] = 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.
|
// 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) {
|
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))
|
log.Trace("State sync spinning down", "active", len(active), "finished", len(finished))
|
||||||
|
|
||||||
for len(active) > 0 {
|
for len(active) > 0 {
|
||||||
var (
|
var (
|
||||||
req *stateReq
|
req *stateReq
|
||||||
|
Loading…
Reference in New Issue
Block a user