forked from cerc-io/plugeth
eth: fix shutdown regression to abort downloads, not just cancel
This commit is contained in:
parent
1aa83290f5
commit
b0bbd47185
@ -557,6 +557,8 @@ func (d *Downloader) spawnSync(fetchers []func() error) error {
|
|||||||
func (d *Downloader) cancel() {
|
func (d *Downloader) cancel() {
|
||||||
// Close the current cancel channel
|
// Close the current cancel channel
|
||||||
d.cancelLock.Lock()
|
d.cancelLock.Lock()
|
||||||
|
defer d.cancelLock.Unlock()
|
||||||
|
|
||||||
if d.cancelCh != nil {
|
if d.cancelCh != nil {
|
||||||
select {
|
select {
|
||||||
case <-d.cancelCh:
|
case <-d.cancelCh:
|
||||||
@ -565,7 +567,6 @@ func (d *Downloader) cancel() {
|
|||||||
close(d.cancelCh)
|
close(d.cancelCh)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
d.cancelLock.Unlock()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancel aborts all of the operations and waits for all download goroutines to
|
// Cancel aborts all of the operations and waits for all download goroutines to
|
||||||
|
@ -222,7 +222,7 @@ func (cs *chainSyncer) loop() {
|
|||||||
|
|
||||||
case <-cs.pm.quitSync:
|
case <-cs.pm.quitSync:
|
||||||
if cs.doneCh != nil {
|
if cs.doneCh != nil {
|
||||||
cs.pm.downloader.Cancel()
|
cs.pm.downloader.Terminate() // Double term is fine, Cancel would block until queue is emptied
|
||||||
<-cs.doneCh
|
<-cs.doneCh
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user