aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2014-05-13 00:04:28 -0700
committerChris Lu <chris.lu@gmail.com>2014-05-13 00:04:28 -0700
commit7e0ae72b07697bd87c9e83acca14ef87832da899 (patch)
treeb89becf17bb84ab842ac12b74cd8608be40c832b
parent982aaa41b906912dbf3b68005edc9c5dd0730f4a (diff)
downloadseaweedfs-7e0ae72b07697bd87c9e83acca14ef87832da899.tar.xz
seaweedfs-7e0ae72b07697bd87c9e83acca14ef87832da899.zip
Add control+c or INT handling
-rw-r--r--go/weed/volume.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/go/weed/volume.go b/go/weed/volume.go
index 43cff9ccf..fa09eb6b5 100644
--- a/go/weed/volume.go
+++ b/go/weed/volume.go
@@ -78,7 +78,7 @@ func runVolume(cmd *Command, args []string) bool {
r := http.NewServeMux()
- weed_server.NewVolumeServer(r, *ip, *vport, *publicIp, folders, maxCounts,
+ volumeServer := weed_server.NewVolumeServer(r, *ip, *vport, *publicIp, folders, maxCounts,
*masterNode, *vpulse, *dataCenter, *rack, volumeWhiteList,
)
@@ -91,6 +91,16 @@ func runVolume(cmd *Command, args []string) bool {
glog.Fatalf(e.Error())
}
+ // deal with control+c
+ signalChan := make(chan os.Signal, 1)
+ signal.Notify(signalChan, os.Interrupt)
+ go func() {
+ for _ = range signalChan {
+ volumeServer.Shutdown()
+ os.Exit(0)
+ }
+ }()
+
if e := http.Serve(listener, r); e != nil {
glog.Fatalf("Fail to serve:%s", e.Error())
}