Fixup: make signal handlers a bit simpler.

No need to spawn a goroutine, nor wait for a channel.
Let's just put everything in a single select call.

Signed-off-by: Xavier Nicollet <xnicollet@gmail.com>
This commit is contained in:
Xavier Nicollet 2022-10-17 21:04:10 +01:00 committed by Xavier Nicollet
parent 1045dc0f21
commit 7dd34c6b4c
1 changed files with 7 additions and 19 deletions

View File

@ -547,31 +547,19 @@ func run() int {
}()
var (
hup = make(chan os.Signal, 1)
hupReady = make(chan bool)
term = make(chan os.Signal, 1)
hup = make(chan os.Signal, 1)
term = make(chan os.Signal, 1)
)
signal.Notify(hup, syscall.SIGHUP)
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 {
select {
case <-hup:
// ignore error, already logged in `reload()`
_ = configCoordinator.Reload()
case errc := <-webReload:
errc <- configCoordinator.Reload()
case <-term:
level.Info(logger).Log("msg", "Received SIGTERM, exiting gracefully...")
return 0