aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-09-13 12:41:26 -0700
committerChris Lu <chris.lu@gmail.com>2020-09-13 12:41:26 -0700
commit1af95c5b76d528ca8532e845305719818435df83 (patch)
tree3561c860b43e37b6adc03e39697cc41db8d64931
parentf8fea19669ee0fe16f9429c1f31aa4e00dc8c622 (diff)
downloadseaweedfs-1af95c5b76d528ca8532e845305719818435df83.tar.xz
seaweedfs-1af95c5b76d528ca8532e845305719818435df83.zip
refactoring
-rw-r--r--weed/command/volume.go57
1 files changed, 24 insertions, 33 deletions
diff --git a/weed/command/volume.go b/weed/command/volume.go
index 33d075d20..5ac31ba79 100644
--- a/weed/command/volume.go
+++ b/weed/command/volume.go
@@ -223,52 +223,43 @@ func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, v
// starting the cluster http server
clusterHttpServer := v.startClusterHttpService(volumeMux)
- stopChain := make(chan struct{})
grace.OnInterrupt(func() {
fmt.Println("volume server has be killed")
- var startTime time.Time
- // Stop heartbeats
+ // Stop heartbeatsZ
glog.V(0).Infof("stop send heartbeat and wait %d seconds until shutdown ...", *v.preStopSeconds)
volumeServer.SendHeartbeat = false
time.Sleep(time.Duration(*v.preStopSeconds) * time.Second)
- glog.V(0).Infof("end sleep %d sec", *v.preStopSeconds)
- // firstly, stop the public http service to prevent from receiving new user request
- if nil != publicHttpDown {
- startTime = time.Now()
- if err := publicHttpDown.Stop(); err != nil {
- glog.Warningf("stop the public http server failed, %v", err)
- }
- delta := time.Now().Sub(startTime).Nanoseconds() / 1e6
- glog.V(0).Infof("stop public http server, elapsed %dms", delta)
- }
- startTime = time.Now()
- if err := clusterHttpServer.Stop(); err != nil {
- glog.Warningf("stop the cluster http server failed, %v", err)
- }
- delta := time.Now().Sub(startTime).Nanoseconds() / 1e6
- glog.V(0).Infof("graceful stop cluster http server, elapsed [%d]", delta)
+ v.shutdown(publicHttpDown, clusterHttpServer, grpcS, volumeServer)
+ })
- startTime = time.Now()
- grpcS.GracefulStop()
- delta = time.Now().Sub(startTime).Nanoseconds() / 1e6
- glog.V(0).Infof("graceful stop gRPC, elapsed [%d]", delta)
+ select {}
- startTime = time.Now()
- volumeServer.Shutdown()
- delta = time.Now().Sub(startTime).Nanoseconds() / 1e6
- glog.V(0).Infof("stop volume server, elapsed [%d]", delta)
+}
- pprof.StopCPUProfile()
+func (v VolumeServerOptions) shutdown(publicHttpDown httpdown.Server, clusterHttpServer httpdown.Server, grpcS *grpc.Server, volumeServer *weed_server.VolumeServer) {
- close(stopChain) // notify exit
- })
+ // firstly, stop the public http service to prevent from receiving new user request
+ if nil != publicHttpDown {
+ glog.V(0).Infof("stop public http server ... ")
+ if err := publicHttpDown.Stop(); err != nil {
+ glog.Warningf("stop the public http server failed, %v", err)
+ }
+ }
- select {
- case <-stopChain:
+ glog.V(0).Infof("graceful stop cluster http server ... ")
+ if err := clusterHttpServer.Stop(); err != nil {
+ glog.Warningf("stop the cluster http server failed, %v", err)
}
- glog.Warningf("the volume server exit.")
+
+ glog.V(0).Infof("graceful stop gRPC ...")
+ grpcS.GracefulStop()
+
+ volumeServer.Shutdown()
+
+ pprof.StopCPUProfile()
+
}
// check whether configure the public port