@@ -193,7 +193,8 @@ func (s *StatusSyncer) updateNodeStatus(ctx context.Context, cli client.Client,
193193 node .Message = ""
194194
195195 if err := s .updateNodeRaftStatus (node ); err != nil {
196- return err
196+ log .Error (err , "failed to get/update node raft status" , "node" , node .Name )
197+ node .Message = err .Error ()
197198 }
198199
199200 isLagged , isReplicating , isReadOnly := corev1 .ConditionUnknown , corev1 .ConditionUnknown , corev1 .ConditionUnknown
@@ -296,19 +297,24 @@ func (s *StatusSyncer) updateNodeCondition(node *apiv1alpha1.NodeStatus, idx int
296297
297298// updateNodeRaftStatus Update Node RaftStatus.
298299func (s * StatusSyncer ) updateNodeRaftStatus (node * apiv1alpha1.NodeStatus ) error {
299- raftStatus , err := s .XenonExecutor .RaftStatus (node .Name )
300- if err != nil {
301- return err
300+ isLeader := corev1 .ConditionFalse
301+ node .RaftStatus = apiv1alpha1.RaftStatus {
302+ Role : string (utils .Unknown ),
303+ Leader : "UNKNOWN" ,
304+ Nodes : nil ,
302305 }
303- node .RaftStatus = * raftStatus
304306
305- isLeader := corev1 .ConditionFalse
306- if node .RaftStatus .Role == string (utils .Leader ) {
307- isLeader = corev1 .ConditionTrue
307+ raftStatus , err := s .XenonExecutor .RaftStatus (node .Name )
308+ if err == nil && raftStatus != nil {
309+ node .RaftStatus = * raftStatus
310+ if raftStatus .Role == string (utils .Leader ) {
311+ isLeader = corev1 .ConditionTrue
312+ }
308313 }
314+
309315 // update apiv1alpha1.NodeConditionLeader.
310316 s .updateNodeCondition (node , int (apiv1alpha1 .IndexLeader ), isLeader )
311- return nil
317+ return err
312318}
313319
314320func (s * StatusSyncer ) reconcileXenon (readyNodes int ) error {
0 commit comments