Skip to content

Commit 9e6d0c4

Browse files
authored
Merge pull request #418 from runkecheng/bugfix_status_cannot_be_modify
status: Skip the unavailable node and set default node status. #417
2 parents 0e723fd + dfe9dfb commit 9e6d0c4

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

mysqlcluster/syncer/status.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ func (s *StatusSyncer) updateNodeStatus(ctx context.Context, cli client.Client,
234234
node.Message = ""
235235

236236
if err := s.updateNodeRaftStatus(node); err != nil {
237-
return err
237+
log.Error(err, "failed to get/update node raft status", "node", node.Name)
238+
node.Message = err.Error()
238239
}
239240

240241
isLagged, isReplicating, isReadOnly := corev1.ConditionUnknown, corev1.ConditionUnknown, corev1.ConditionUnknown
@@ -337,19 +338,24 @@ func (s *StatusSyncer) updateNodeCondition(node *apiv1alpha1.NodeStatus, idx int
337338

338339
// updateNodeRaftStatus Update Node RaftStatus.
339340
func (s *StatusSyncer) updateNodeRaftStatus(node *apiv1alpha1.NodeStatus) error {
340-
raftStatus, err := s.XenonExecutor.RaftStatus(node.Name)
341-
if err != nil {
342-
return err
341+
isLeader := corev1.ConditionFalse
342+
node.RaftStatus = apiv1alpha1.RaftStatus{
343+
Role: string(utils.Unknown),
344+
Leader: "UNKNOWN",
345+
Nodes: nil,
343346
}
344-
node.RaftStatus = *raftStatus
345347

346-
isLeader := corev1.ConditionFalse
347-
if node.RaftStatus.Role == string(utils.Leader) {
348-
isLeader = corev1.ConditionTrue
348+
raftStatus, err := s.XenonExecutor.RaftStatus(node.Name)
349+
if err == nil && raftStatus != nil {
350+
node.RaftStatus = *raftStatus
351+
if raftStatus.Role == string(utils.Leader) {
352+
isLeader = corev1.ConditionTrue
353+
}
349354
}
355+
350356
// update apiv1alpha1.NodeConditionLeader.
351357
s.updateNodeCondition(node, int(apiv1alpha1.IndexLeader), isLeader)
352-
return nil
358+
return err
353359
}
354360

355361
func (s *StatusSyncer) reconcileXenon(readyNodes int) error {

utils/constants.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ const (
166166
Leader RaftRole = "LEADER"
167167
Follower RaftRole = "FOLLOWER"
168168
Candidate RaftRole = "CANDIDATE"
169+
Unknown RaftRole = "UNKNOWN"
169170
)
170171

171172
const LableRebuild = "rebuild"

0 commit comments

Comments
 (0)