Boostrap persistent state for volume servers. (#7984)
This PR implements logic load/save persistent state information for storages associated with volume servers, and reporting state changes back to masters via heartbeat messages. More work ensues! See https://github.com/seaweedfs/seaweedfs/issues/7977 for details.
This commit is contained in:
@@ -212,6 +212,19 @@ func (vs *VolumeServer) doHeartbeatWithRetry(masterAddress pb.ServerAddress, grp
|
||||
port := uint32(vs.store.Port)
|
||||
for {
|
||||
select {
|
||||
case stateMessage := <-vs.store.StateUpdateChan:
|
||||
stateBeat := &master_pb.Heartbeat{
|
||||
Ip: ip,
|
||||
Port: port,
|
||||
DataCenter: dataCenter,
|
||||
Rack: rack,
|
||||
State: stateMessage,
|
||||
}
|
||||
glog.V(0).Infof("volume server %s:%d updates state to %v", vs.store.Ip, vs.store.Port, stateMessage)
|
||||
if err = stream.Send(stateBeat); err != nil {
|
||||
glog.V(0).Infof("Volume Server Failed to update state to master %s: %v", masterAddress, err)
|
||||
return "", err
|
||||
}
|
||||
case volumeMessage := <-vs.store.NewVolumesChan:
|
||||
deltaBeat := &master_pb.Heartbeat{
|
||||
Ip: ip,
|
||||
|
||||
Reference in New Issue
Block a user