diff options
| author | Chris Lu <chris.lu@gmail.com> | 2017-01-10 01:30:00 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2017-01-10 01:30:00 -0800 |
| commit | e767c3ea4fd04a9cb01ec6698b4582663bd98bb6 (patch) | |
| tree | bf92ed8bc20941bea0f0fef051b40844f86f82c3 /weed/server | |
| parent | e46c3415f752e2e0c252c420adb882c4bcb7416b (diff) | |
| download | seaweedfs-e767c3ea4fd04a9cb01ec6698b4582663bd98bb6.tar.xz seaweedfs-e767c3ea4fd04a9cb01ec6698b4582663bd98bb6.zip | |
disable master connection timeout
temporarily disable master connection timeout due to heartbeat
connection timeout
Diffstat (limited to 'weed/server')
| -rw-r--r-- | weed/server/volume_grpc_client.go | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/weed/server/volume_grpc_client.go b/weed/server/volume_grpc_client.go index 54e2c2f75..ac3871c8c 100644 --- a/weed/server/volume_grpc_client.go +++ b/weed/server/volume_grpc_client.go @@ -53,10 +53,13 @@ func (vs *VolumeServer) doHeartbeat(sleepInterval time.Duration) error { vs.store.Client = stream defer func() { vs.store.Client = nil }() + doneChan := make(chan error, 1) + go func() { for { in, err := stream.Recv() if err != nil { + doneChan <- err return } vs.store.VolumeSizeLimit = in.GetVolumeSizeLimit() @@ -64,11 +67,22 @@ func (vs *VolumeServer) doHeartbeat(sleepInterval time.Duration) error { } }() + if err = stream.Send(vs.store.CollectHeartbeat()); err != nil { + glog.V(0).Infof("Volume Server Failed to talk with master %s: %v", masterNode, err) + return err + } + + tickChan := time.NewTimer(sleepInterval).C + for { - if err = stream.Send(vs.store.CollectHeartbeat()); err != nil { - glog.V(0).Infof("Volume Server Failed to talk with master %s: %v", masterNode, err) + select { + 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) + return err + } + case err := <-doneChan: return err } - time.Sleep(sleepInterval) } } |
