aboutsummaryrefslogtreecommitdiff
path: root/weed/server/volume_grpc_client.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-08-24 01:26:56 -0700
committerChris Lu <chris.lu@gmail.com>2018-08-24 01:26:56 -0700
commit76cbe8bf3371fbdbb65cf13fe0d767164b53b151 (patch)
treeacefbaeb8ab2b66b0ddfb07415abd8c263c63e94 /weed/server/volume_grpc_client.go
parent5ccf8e8078eee570f7ff444ea86a07589394a4ed (diff)
downloadseaweedfs-76cbe8bf3371fbdbb65cf13fe0d767164b53b151.tar.xz
seaweedfs-76cbe8bf3371fbdbb65cf13fe0d767164b53b151.zip
instant notification of new volumes added or deleted
Diffstat (limited to 'weed/server/volume_grpc_client.go')
-rw-r--r--weed/server/volume_grpc_client.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/weed/server/volume_grpc_client.go b/weed/server/volume_grpc_client.go
index de6fa23c7..219948936 100644
--- a/weed/server/volume_grpc_client.go
+++ b/weed/server/volume_grpc_client.go
@@ -89,6 +89,22 @@ func (vs *VolumeServer) doHeartbeat(masterNode string, sleepInterval time.Durati
for {
select {
+ case vid := <-vs.store.NewVolumeIdChan:
+ deltaBeat := &master_pb.Heartbeat{
+ NewVids: []uint32{uint32(vid)},
+ }
+ if err = stream.Send(deltaBeat); err != nil {
+ glog.V(0).Infof("Volume Server Failed to update to master %s: %v", masterNode, err)
+ return "", err
+ }
+ case vid := <-vs.store.DeletedVolumeIdChan:
+ deltaBeat := &master_pb.Heartbeat{
+ DeletedVids: []uint32{uint32(vid)},
+ }
+ if err = stream.Send(deltaBeat); err != nil {
+ glog.V(0).Infof("Volume Server Failed to update to master %s: %v", masterNode, err)
+ return "", err
+ }
case <-tickChan:
if err = stream.Send(vs.store.CollectHeartbeat()); err != nil {
glog.V(0).Infof("Volume Server Failed to talk with master %s: %v", masterNode, err)