Have masters update DataNode details based on state heartbeats from volume servers. (#8017)
This commit is contained in:
@@ -165,7 +165,22 @@ func (ms *MasterServer) SendHeartbeat(stream master_pb.Seaweed_SendHeartbeatServ
|
|||||||
|
|
||||||
glog.V(4).Infof("master received heartbeat %s", heartbeat.String())
|
glog.V(4).Infof("master received heartbeat %s", heartbeat.String())
|
||||||
stats.MasterReceivedHeartbeatCounter.WithLabelValues("total").Inc()
|
stats.MasterReceivedHeartbeatCounter.WithLabelValues("total").Inc()
|
||||||
// TODO(issues/7977): process status heartbeat updates from volume servers
|
|
||||||
|
if heartbeat.State != nil {
|
||||||
|
stats.MasterReceivedHeartbeatCounter.WithLabelValues("stateUpdates").Inc()
|
||||||
|
|
||||||
|
updated := false
|
||||||
|
dn.Lock()
|
||||||
|
if dn.MaintenanceMode != heartbeat.State.GetMaintenance() {
|
||||||
|
updated = true
|
||||||
|
dn.MaintenanceMode = heartbeat.State.GetMaintenance()
|
||||||
|
}
|
||||||
|
dn.Unlock()
|
||||||
|
|
||||||
|
if updated {
|
||||||
|
glog.V(1).Infof("master sees state update from %s: %v", dn.Url(), heartbeat.State)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
message := &master_pb.VolumeLocation{
|
message := &master_pb.VolumeLocation{
|
||||||
Url: dn.Url(),
|
Url: dn.Url(),
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ type DataNode struct {
|
|||||||
LastSeen int64 // unix time in seconds
|
LastSeen int64 // unix time in seconds
|
||||||
Counter int // in race condition, the previous dataNode was not dead
|
Counter int // in race condition, the previous dataNode was not dead
|
||||||
IsTerminating bool
|
IsTerminating bool
|
||||||
|
|
||||||
|
MaintenanceMode bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDataNode(id string) *DataNode {
|
func NewDataNode(id string) *DataNode {
|
||||||
|
|||||||
Reference in New Issue
Block a user