diff options
Diffstat (limited to 'weed/server')
| -rw-r--r-- | weed/server/master_grpc_server.go | 12 | ||||
| -rw-r--r-- | weed/server/volume_grpc_client.go | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go index b5cbd85b7..8a9117b1e 100644 --- a/weed/server/master_grpc_server.go +++ b/weed/server/master_grpc_server.go @@ -65,5 +65,17 @@ func (ms MasterServer) SendHeartbeat(stream pb.Seaweed_SendHeartbeatServer) erro } return err } + + if !t.IsLeader() { + newLeader, err := t.Leader() + if err == nil { + if err := stream.Send(&pb.HeartbeatResponse{ + Leader: newLeader, + }); err != nil { + return err + } + } + } + } } diff --git a/weed/server/volume_grpc_client.go b/weed/server/volume_grpc_client.go index d2d6f1a91..ee6f6095c 100644 --- a/weed/server/volume_grpc_client.go +++ b/weed/server/volume_grpc_client.go @@ -65,6 +65,11 @@ func (vs *VolumeServer) doHeartbeat(sleepInterval time.Duration) error { } vs.store.VolumeSizeLimit = in.GetVolumeSizeLimit() vs.guard.SecretKey = security.Secret(in.GetSecretKey()) + if in.GetLeader() != "" && masterNode != in.GetLeader() { + vs.masterNodes.SetPossibleLeader(in.GetLeader()) + doneChan <- nil + return + } } }() |
