@@ -116,8 +116,12 @@ func (r *TypesenseClusterReconciler) ReconcileQuorum(ctx context.Context, ts *ts
116116 r .logger .V (debugLevel ).Info ("reporting cluster status" , "status" , clusterStatus )
117117
118118 if clusterStatus == ClusterStatusSplitBrain {
119- nodeslist := strings .Split (quorum .NodesListConfigMap .Data ["nodeslist" ], "," )
120- if _ , c := contains (nodeslist , fmt .Sprintf (ClusterStatefulSet , ts .Name )); c == true {
119+ rawNodeslist , ok := quorum .NodesListConfigMap .Data ["nodes" ]
120+ if ! ok || rawNodeslist == "" {
121+ return ConditionReasonQuorumNotReady , 0 , fmt .Errorf ("configmap %s is missing 'nodes' key" , quorum .NodesListConfigMap .Name )
122+ }
123+ nodeslist := strings .Split (rawNodeslist , "," )
124+ if hasHostnameBasedNodes (nodeslist , fmt .Sprintf (ClusterStatefulSet , ts .Name )) {
121125 return ConditionReasonQuorumNotReadyWaitATerm , 0 , nil
122126 }
123127 return r .downgradeQuorum (ctx , ts , quorum .NodesListConfigMap , stsObjectKey , sts .Status .ReadyReplicas , int32 (quorum .MinRequiredNodes ))
@@ -170,8 +174,12 @@ func (r *TypesenseClusterReconciler) ReconcileQuorum(ctx context.Context, ts *ts
170174 }
171175
172176 if clusterStatus == ClusterStatusElectionDeadlock {
173- nodeslist := strings .Split (quorum .NodesListConfigMap .Data ["nodeslist" ], "," )
174- if _ , c := contains (nodeslist , fmt .Sprintf (ClusterStatefulSet , ts .Name )); c == true {
177+ rawNodeslist , ok := quorum .NodesListConfigMap .Data ["nodes" ]
178+ if ! ok || rawNodeslist == "" {
179+ return ConditionReasonQuorumNotReady , 0 , fmt .Errorf ("configmap %s is missing 'nodes' key" , quorum .NodesListConfigMap .Name )
180+ }
181+ nodeslist := strings .Split (rawNodeslist , "," )
182+ if hasHostnameBasedNodes (nodeslist , fmt .Sprintf (ClusterStatefulSet , ts .Name )) {
175183 return ConditionReasonQuorumNotReadyWaitATerm , 0 , nil
176184 }
177185 return r .downgradeQuorum (ctx , ts , quorum .NodesListConfigMap , stsObjectKey , int32 (healthyNodes ), int32 (minRequiredNodes ))
@@ -381,3 +389,13 @@ func (r *TypesenseClusterReconciler) updatePodReadinessGate(ctx context.Context,
381389 //r.logger.V(debugLevel).Info("updating pod readiness gate condition", "pod", pod.Name, "condition", condition.Type, "conditionStatus", condition.Status)
382390 return nil
383391}
392+
393+ func hasHostnameBasedNodes (nodes []string , statefulSetName string ) bool {
394+ for _ , node := range nodes {
395+ if strings .Contains (node , statefulSetName ) {
396+ return true
397+ }
398+ }
399+
400+ return false
401+ }
0 commit comments