@@ -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.
339340func (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
355361func (s * StatusSyncer ) reconcileXenon (readyNodes int ) error {
0 commit comments