sealing sched: Fix deadlock in worker watcher

This commit is contained in:
Łukasz Magiera 2020-08-13 12:17:24 +02:00
parent f212ca60c8
commit 632fd36205

View File

@ -87,11 +87,14 @@ func (sh *scheduler) runWorkerWatcher() {
} }
log.Warnf("worker %d dropped", wid) log.Warnf("worker %d dropped", wid)
select { // send in a goroutine to avoid a deadlock between workerClosing / watchClosing
case sh.workerClosing <- wid: go func() {
case <-sh.closing: select {
return case sh.workerClosing <- wid:
} case <-sh.closing:
return
}
}()
} }
} }
} }