volume server get notified of leader change

This commit is contained in:
Chris Lu
2017-01-18 09:34:27 -08:00
parent 59022b6fe0
commit 5b0f5f456e
5 changed files with 66 additions and 34 deletions

View File

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

View File

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