better handling of os signals

This commit is contained in:
Chris Lu
2014-05-13 15:04:04 -07:00
parent 029923329d
commit dac95464b8
5 changed files with 46 additions and 32 deletions

View File

@@ -7,7 +7,6 @@ import (
"github.com/gorilla/mux"
"net/http"
"os"
"os/signal"
"runtime"
"runtime/pprof"
"strconv"
@@ -218,16 +217,10 @@ func runServer(cmd *Command, args []string) bool {
glog.Fatalf(e.Error())
}
// deal with control+c
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, os.Interrupt, os.Kill)
go func() {
for _ = range signalChan {
volumeServer.Shutdown()
pprof.StopCPUProfile()
os.Exit(0)
}
}()
OnInterrupt(func() {
volumeServer.Shutdown()
pprof.StopCPUProfile()
})
if e := http.Serve(volumeListener, r); e != nil {
glog.Fatalf("Fail to serve:%s", e.Error())