From 3d70c8ad8e357729e2a63fc682509d3354a8b0f5 Mon Sep 17 00:00:00 2001 From: Vitor Savian Date: Wed, 10 Jan 2024 16:37:56 -0300 Subject: [PATCH] Error getting node in setEtcdStatusCondition Signed-off-by: Vitor Savian Added retry and changed nodes for Signed-off-by: Vitor Savian --- pkg/etcd/etcd.go | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/pkg/etcd/etcd.go b/pkg/etcd/etcd.go index b36fafdb596f..59149304d483 100644 --- a/pkg/etcd/etcd.go +++ b/pkg/etcd/etcd.go @@ -1086,40 +1086,41 @@ func (e *ETCD) manageLearners(ctx context.Context) { } for _, member := range members.Members { - var node *v1.Node - for _, node = range nodes { - if strings.HasPrefix(member.Name, node.Name+"-") { - nodeIsMember[node.Name] = true - } - } + status := StatusVoter + message := "" if member.IsLearner { + status = StatusLearner if err := e.trackLearnerProgress(ctx, progress, member); err != nil { logrus.Errorf("Failed to track learner progress towards promotion: %v", err) } + } - if err := e.setEtcdStatusCondition(node, client, member.Name, StatusLearner, ""); err != nil { - logrus.Errorf("Unable to set etcd status condition %s: %v", member.Name, err) + var node *v1.Node + for _, n := range nodes { + if strings.HasPrefix(member.Name, n.Name+"-") { + node = n + nodeIsMember[n.Name] = true + break } - break + } + if node == nil { + continue } - // verify if the member is healthy and set the etcd status condition + // verify if the member is healthy and set the status if _, err := e.getETCDStatus(ctx, member.ClientURLs[0]); err != nil { - if err := e.setEtcdStatusCondition(node, client, member.Name, StatusUnhealthy, err.Error()); err != nil { - logrus.Errorf("Unable to set etcd status condition for unhealthy node %s: %v", member.Name, err) - } - continue + message = err.Error() + status = StatusUnhealthy } - if err := e.setEtcdStatusCondition(node, client, member.Name, StatusVoter, ""); err != nil { + if err := e.setEtcdStatusCondition(node, client, member.Name, status, message); err != nil { logrus.Errorf("Unable to set etcd status condition %s: %v", member.Name, err) } } - for nodeName, isMember := range nodeIsMember { - if !isMember { - node := nodesMap[nodeName] + for nodeName, node := range nodesMap { + if !nodeIsMember[nodeName] { if err := e.setEtcdStatusCondition(node, client, nodeName, StatusUnjoined, ""); err != nil { logrus.Errorf("Unable to set etcd status condition for a node that is not a cluster member %s: %v", nodeName, err) }