Revert "Fixup: make signal handlers a bit simpler."

This commit is contained in:
Simon Pasquier 2023-01-12 11:59:30 +01:00 committed by GitHub
parent ecb66f76b0
commit 3ae086fff2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 7 deletions

View File

@ -554,19 +554,31 @@ func run() int {
}() }()
var ( var (
hup = make(chan os.Signal, 1) hup = make(chan os.Signal, 1)
term = make(chan os.Signal, 1) hupReady = make(chan bool)
term = make(chan os.Signal, 1)
) )
signal.Notify(hup, syscall.SIGHUP) signal.Notify(hup, syscall.SIGHUP)
signal.Notify(term, os.Interrupt, syscall.SIGTERM) signal.Notify(term, os.Interrupt, syscall.SIGTERM)
go func() {
<-hupReady
for {
select {
case <-hup:
// ignore error, already logged in `reload()`
_ = configCoordinator.Reload()
case errc := <-webReload:
errc <- configCoordinator.Reload()
}
}
}()
// Wait for reload or termination signals.
close(hupReady) // Unblock SIGHUP handler.
for { for {
select { select {
case <-hup:
// ignore error, already logged in `reload()`
_ = configCoordinator.Reload()
case errc := <-webReload:
errc <- configCoordinator.Reload()
case <-term: case <-term:
level.Info(logger).Log("msg", "Received SIGTERM, exiting gracefully...") level.Info(logger).Log("msg", "Received SIGTERM, exiting gracefully...")
return 0 return 0