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:
parent
1045dc0f21
commit
7dd34c6b4c
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue