Move signal handling loop to common.

This commit is contained in:
Tom Wilkie committed 2017-01-26 17:55:19 +00:00
1 parent f5dfefef75
commit 590a151bde
5 files changed
+8 -34

No files matched your search

+3
View File
@@ -124,3 +124,6 @@
[submodule "vendor/github.com/estesp/manifest-tool"]
path = vendor/github.com/estesp/manifest-tool
url = https://github.com/estesp/manifest-tool
[submodule "vendor/github.com/weaveworks/common"]
path = vendor/github.com/weaveworks/common
url = https://github.com/weaveworks/common
-32
View File
@@ -1,32 +0,0 @@
package common
import (
"os"
"os/signal"
"runtime"
"syscall"
)
// A subsystem/server/... that can be stopped or queried about the status with a signal
type SignalReceiver interface {
Stop() error
}
func SignalHandlerLoop(ss ...SignalReceiver) {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM)
buf := make([]byte, 1<<20)
for {
switch <-sigs {
case syscall.SIGINT, syscall.SIGTERM:
Log.Infof("=== received SIGINT/SIGTERM ===\n*** exiting")
for _, subsystem := range ss {
subsystem.Stop()
}
return
case syscall.SIGQUIT:
stacklen := runtime.Stack(buf, true)
Log.Infof("=== received SIGQUIT ===\n*** goroutine dump...\n%s\n*** end", buf[:stacklen])
}
}
}
+2 -1
View File
@@ -5,6 +5,7 @@ import (
"os"
"strings"
"github.com/weaveworks/common/signals"
"github.com/weaveworks/docker/pkg/mflag"
"github.com/weaveworks/weave/common"
"github.com/weaveworks/weave/common/mflagext"
@@ -79,5 +80,5 @@ func main() {
p.AttachExistingContainers()
go p.Serve(listeners)
go p.ListenAndServeStatus("/home/weave/status.sock")
common.SignalHandlerLoop()
signals.SignalHandlerLoop(common.Log)
}
+2 -1
View File
@@ -13,6 +13,7 @@ import (
"github.com/gorilla/mux"
"github.com/pkg/profile"
"github.com/weaveworks/common/signals"
"github.com/weaveworks/docker/pkg/mflag"
"github.com/weaveworks/mesh"
@@ -361,7 +362,7 @@ func main() {
go listenAndServeHTTP(statusAddr, statusMux)
}
common.SignalHandlerLoop(router)
signals.SignalHandlerLoop(common.Log, router)
}
func options() map[string]string {