func()

in pkg/sync/pool/pool.go [320:357]


func (p *Pool) monitor(interrupt chan os.Signal) {
	if interrupt == nil {
		interrupt = make(chan os.Signal, 1)
	}
	signal.Notify(interrupt, os.Interrupt, syscall.SIGTERM)
	var interrupted bool
	for {
		select {
		case <-p.signals.Finish:
			p.state.Processed.Add(1)
		case <-p.signals.Added:
			p.state.Queued.Add(1)
		case err := <-p.errors:
			p.state.Errors.Add(err)
			if p.failFast {
				if p.writer != nil {
					fmt.Fprintln(p.writer, failFastSetStopMsg)
				}
				//nolint
				go p.Stop()
			}
		case <-interrupt:
			if interrupted {
				continue
			}
			interrupted = true
			if p.writer != nil {
				fmt.Fprintln(p.writer, "pool: received interrupt, stopping pool...")
			}
			//nolint
			go p.Stop()
		case <-p.signals.StopMonitor:
			p.state.monitoring = false
			break
		}
		p.updateState()
	}
}