@@ -116,14 +116,15 @@ 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- 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 )
119+ hbv , err := r . hasBootstrapValues ( ts , quorum .NodesListConfigMap )
120+ if err != nil {
121+ return ConditionReasonQuorumNotReady , 0 , err
122122 }
123- nodeslist := strings . Split ( rawNodeslist , "," )
124- if hasHostnameBasedNodes ( nodeslist , fmt . Sprintf ( ClusterStatefulSet , ts . Name )) {
123+
124+ if hbv {
125125 return ConditionReasonQuorumNotReadyWaitATerm , 0 , nil
126126 }
127+
127128 return r .downgradeQuorum (ctx , ts , quorum .NodesListConfigMap , stsObjectKey , sts .Status .ReadyReplicas , int32 (quorum .MinRequiredNodes ))
128129 }
129130
@@ -174,14 +175,15 @@ func (r *TypesenseClusterReconciler) ReconcileQuorum(ctx context.Context, ts *ts
174175 }
175176
176177 if clusterStatus == ClusterStatusElectionDeadlock {
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 )
178+ hbv , err := r . hasBootstrapValues ( ts , quorum .NodesListConfigMap )
179+ if err != nil {
180+ return ConditionReasonQuorumNotReady , 0 , err
180181 }
181- nodeslist := strings . Split ( rawNodeslist , "," )
182- if hasHostnameBasedNodes ( nodeslist , fmt . Sprintf ( ClusterStatefulSet , ts . Name )) {
182+
183+ if hbv {
183184 return ConditionReasonQuorumNotReadyWaitATerm , 0 , nil
184185 }
186+
185187 return r .downgradeQuorum (ctx , ts , quorum .NodesListConfigMap , stsObjectKey , int32 (healthyNodes ), int32 (minRequiredNodes ))
186188 }
187189
@@ -389,13 +391,3 @@ func (r *TypesenseClusterReconciler) updatePodReadinessGate(ctx context.Context,
389391 //r.logger.V(debugLevel).Info("updating pod readiness gate condition", "pod", pod.Name, "condition", condition.Type, "conditionStatus", condition.Status)
390392 return nil
391393}
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