Skip to content

Commit 65814d0

Browse files
shyimoshaiMoria
andauthored
fix: fetch cluster view after leader recover (#92)
* fix: fetch cluster view after leader recover * fix: fetch cluster again view only when leader recover Co-authored-by: shaimoria <shai.moria@zooz.com>
1 parent f215a06 commit 65814d0

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

controllers/rediscluster.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ func (r *RedisClusterReconciler) handleFailover(redisCluster *dbv1.RedisCluster,
627627
}
628628

629629
func (r *RedisClusterReconciler) recoverCluster(redisCluster *dbv1.RedisCluster) error {
630+
var runLeaderRecover bool = false
630631
clusterView, err := r.NewRedisClusterView(redisCluster)
631632
if err != nil {
632633
return err
@@ -635,6 +636,8 @@ func (r *RedisClusterReconciler) recoverCluster(redisCluster *dbv1.RedisCluster)
635636
r.Log.Info(clusterView.String())
636637
for i, leader := range *clusterView {
637638
if leader.Failed {
639+
runLeaderRecover = true
640+
638641
if leader.Terminating {
639642
if err = r.waitForPodDelete(*leader.Pod); err != nil {
640643
return errors.Errorf("Failed to wait for leader pod to be deleted %s: %v", leader.NodeNumber, err)
@@ -666,6 +669,17 @@ func (r *RedisClusterReconciler) recoverCluster(redisCluster *dbv1.RedisCluster)
666669
}
667670
}
668671

672+
if runLeaderRecover {
673+
// we fetch again the cluster view in case the state has changed
674+
// since the last check (before handling the failed leaders)
675+
clusterView, err = r.NewRedisClusterView(redisCluster)
676+
if err != nil {
677+
return err
678+
}
679+
680+
r.Log.Info(clusterView.String())
681+
}
682+
669683
for _, leader := range *clusterView {
670684
var missingFollowers []NodeNumbers
671685
var failedFollowerIPs []string

0 commit comments

Comments
 (0)