in pkg/sync/pool/pool.go [361:381]
func (p *Pool) updateState() {
if p.Status() >= StoppingStatus || p.Status() == StoppedStatus {
return
}
var workersIdle = p.state.Processed.Get() == p.state.Queued.Get()
var emptyQueue = p.state.Queued.Get() == 0
var workersProcessing = p.state.Queued.Get() > p.state.Processed.Get()
if workersProcessing {
p.setStatus(StartedStatus)
}
if emptyQueue && workersIdle && p.Status() != IdleStatus {
p.setStatus(IdleStatus)
}
if workersIdle && !emptyQueue && p.Status() != FinishedStatus {
p.setStatus(FinishedStatus)
}
}