instant notification of new volumes added or deleted

This commit is contained in:
Chris Lu
2018-08-24 01:26:56 -07:00
parent 5ccf8e8078
commit 76cbe8bf33
7 changed files with 170 additions and 137 deletions

View File

@@ -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)