forked from mirrors/statsd_exporter
Merge pull request #360 from glightfoot/quit
Don't return empty responses to lifecycle api requests
This commit is contained in:
commit
799943cb47
1 changed files with 16 additions and 6 deletions
22
main.go
22
main.go
|
@ -477,9 +477,13 @@ func main() {
|
||||||
</body>
|
</body>
|
||||||
</html>`))
|
</html>`))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
quitChan := make(chan struct{}, 1)
|
||||||
|
|
||||||
if *enableLifecycle {
|
if *enableLifecycle {
|
||||||
mux.HandleFunc("/-/reload", func(w http.ResponseWriter, r *http.Request) {
|
mux.HandleFunc("/-/reload", func(w http.ResponseWriter, r *http.Request) {
|
||||||
if r.Method == http.MethodPut || r.Method == http.MethodPost {
|
if r.Method == http.MethodPut || r.Method == http.MethodPost {
|
||||||
|
fmt.Fprintf(w, "Requesting reload")
|
||||||
if *mappingConfig == "" {
|
if *mappingConfig == "" {
|
||||||
level.Warn(logger).Log("msg", "Received lifecycle api reload but no mapping config to reload")
|
level.Warn(logger).Log("msg", "Received lifecycle api reload but no mapping config to reload")
|
||||||
return
|
return
|
||||||
|
@ -490,8 +494,8 @@ func main() {
|
||||||
})
|
})
|
||||||
mux.HandleFunc("/-/quit", func(w http.ResponseWriter, r *http.Request) {
|
mux.HandleFunc("/-/quit", func(w http.ResponseWriter, r *http.Request) {
|
||||||
if r.Method == http.MethodPut || r.Method == http.MethodPost {
|
if r.Method == http.MethodPut || r.Method == http.MethodPost {
|
||||||
level.Info(logger).Log("msg", "Received lifecycle api quit, exiting")
|
fmt.Fprintf(w, "Requesting termination... Goodbye!")
|
||||||
os.Exit(0)
|
quitChan <- struct{}{}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -514,11 +518,17 @@ func main() {
|
||||||
|
|
||||||
go serveHTTP(mux, *listenAddress, logger)
|
go serveHTTP(mux, *listenAddress, logger)
|
||||||
|
|
||||||
signals := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(signals, os.Interrupt, syscall.SIGTERM)
|
|
||||||
|
|
||||||
go sighupConfigReloader(*mappingConfig, mapper, *cacheSize, logger, cacheOption)
|
go sighupConfigReloader(*mappingConfig, mapper, *cacheSize, logger, cacheOption)
|
||||||
go exporter.Listen(events)
|
go exporter.Listen(events)
|
||||||
|
|
||||||
<-signals
|
signals := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(signals, os.Interrupt, syscall.SIGTERM)
|
||||||
|
|
||||||
|
// quit if we get a message on either channel
|
||||||
|
select {
|
||||||
|
case sig := <-signals:
|
||||||
|
level.Info(logger).Log("msg", "Received os signal, exiting", "signal", sig.String())
|
||||||
|
case <-quitChan:
|
||||||
|
level.Info(logger).Log("msg", "Received lifecycle api quit, exiting")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue