aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2020-10-30 15:48:46 -0700
committerGitHub <noreply@github.com>2020-10-30 15:48:46 -0700
commitb9ccaabdcc27bbde09d854ae99db3dd8b7ed2b0a (patch)
treeb12acbdb7e97803139b38cdae6b285302fe7dac6
parent20b967e38c2b3e5482a473ebda39a7d7cf0a79be (diff)
parentd2a4ffdd6071eb1cda383a8b0b6f1af77bef8dcb (diff)
downloadseaweedfs-b9ccaabdcc27bbde09d854ae99db3dd8b7ed2b0a.tar.xz
seaweedfs-b9ccaabdcc27bbde09d854ae99db3dd8b7ed2b0a.zip
Merge pull request #1586 from kmlebedev/pre_stop_remove_volumes
delete volumes from master on stop volume server
-rw-r--r--weed/server/volume_grpc_client_to_master.go17
-rw-r--r--weed/storage/store.go7
2 files changed, 23 insertions, 1 deletions
diff --git a/weed/server/volume_grpc_client_to_master.go b/weed/server/volume_grpc_client_to_master.go
index 199f8faba..84467ec1c 100644
--- a/weed/server/volume_grpc_client_to_master.go
+++ b/weed/server/volume_grpc_client_to_master.go
@@ -216,6 +216,23 @@ func (vs *VolumeServer) doHeartbeat(masterNode, masterGrpcAddress string, grpcDi
case err = <-doneChan:
return
case <-vs.stopChan:
+ var volumeMessages []*master_pb.VolumeInformationMessage
+ emptyBeat := &master_pb.Heartbeat{
+ Ip: vs.store.Ip,
+ Port: uint32(vs.store.Port),
+ PublicUrl: vs.store.PublicUrl,
+ MaxVolumeCount: uint32(0),
+ MaxFileKey: uint64(0),
+ DataCenter: vs.store.GetDataCenter(),
+ Rack: vs.store.GetRack(),
+ Volumes: volumeMessages,
+ HasNoVolumes: len(volumeMessages) == 0,
+ }
+ glog.V(1).Infof("volume server %s:%d stops and deletes all volumes", vs.store.Ip, vs.store.Port)
+ if err = stream.Send(emptyBeat); err != nil {
+ glog.V(0).Infof("Volume Server Failed to update to master %s: %v", masterNode, err)
+ return "", err
+ }
return
}
}
diff --git a/weed/storage/store.go b/weed/storage/store.go
index 3a8c07e6e..946ba0df1 100644
--- a/weed/storage/store.go
+++ b/weed/storage/store.go
@@ -194,6 +194,12 @@ func (s *Store) SetDataCenter(dataCenter string) {
func (s *Store) SetRack(rack string) {
s.rack = rack
}
+func (s *Store) GetDataCenter() string {
+ return s.dataCenter
+}
+func (s *Store) GetRack() string {
+ return s.rack
+}
func (s *Store) CollectHeartbeat() *master_pb.Heartbeat {
var volumeMessages []*master_pb.VolumeInformationMessage
@@ -229,7 +235,6 @@ func (s *Store) CollectHeartbeat() *master_pb.Heartbeat {
}
}
if v.IsReadOnly() {
- collectionVolumeReadOnlyCount[v.Collection] = make(map[string]uint8)
collectionVolumeReadOnlyCount[v.Collection]["IsReadOnly"] += 1
if v.noWriteOrDelete {
collectionVolumeReadOnlyCount[v.Collection]["noWriteOrDelete"] += 1