Skip to content

Commit 29032c4

Browse files
committed
fixed sentinel in one reconcile loop
1 parent 8786107 commit 29032c4

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

pkg/controller/rediscluster/checker.go

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@ package rediscluster
33
import (
44
"errors"
55
"fmt"
6-
"github.com/ucloud/redis-operator/pkg/controller/clustercache"
76
"time"
7+
8+
redisv1beta1 "github.com/ucloud/redis-operator/pkg/apis/redis/v1beta1"
9+
"github.com/ucloud/redis-operator/pkg/controller/clustercache"
10+
"github.com/ucloud/redis-operator/pkg/util"
811
)
912

1013
const (
11-
timeToPrepare = 2 * time.Minute
14+
checkInterval = 5 * time.Second
15+
timeOut = 30 * time.Second
1216
needRequeueMsg = "need requeue"
1317
)
1418

@@ -96,6 +100,7 @@ func (r *RedisClusterHandler) CheckAndHeal(meta *clustercache.Meta) error {
96100
}
97101
}
98102
}
103+
// TODO: check sentinel's number
99104
//for _, sip := range sentinels {
100105
// if err := r.rcChecker.CheckSentinelNumberInMemory(sip, meta.Obj, meta.Auth); err != nil {
101106
// r.logger.WithValues("namespace", meta.Obj.Namespace, "name", meta.Obj.Name).Info(err.Error())
@@ -111,7 +116,10 @@ func (r *RedisClusterHandler) CheckAndHeal(meta *clustercache.Meta) error {
111116
if err := r.rcHealer.RestoreSentinel(sip, meta.Auth); err != nil {
112117
return err
113118
}
114-
return needRequeueErr
119+
if err := r.waitRestoreSentinelOK(sip, meta.Obj, meta.Auth); err != nil {
120+
r.logger.WithValues("namespace", meta.Obj.Namespace, "name", meta.Obj.Name).Info(err.Error())
121+
return err
122+
}
115123
}
116124
}
117125

@@ -152,3 +160,21 @@ func (r *RedisClusterHandler) setSentinelConfig(meta *clustercache.Meta, sentine
152160
}
153161
return nil
154162
}
163+
164+
func (r *RedisClusterHandler) waitRestoreSentinelOK(sentinel string, rc *redisv1beta1.RedisCluster, auth *util.AuthConfig) error {
165+
timer := time.NewTimer(timeOut)
166+
defer timer.Stop()
167+
for {
168+
select {
169+
case <-timer.C:
170+
return fmt.Errorf("wait for resetore sentinel timeout")
171+
default:
172+
if err := r.rcChecker.CheckSentinelSlavesNumberInMemory(sentinel, rc, auth); err != nil {
173+
r.logger.WithValues("namespace", rc.Namespace, "name", rc.Name).Info(err.Error())
174+
time.Sleep(checkInterval)
175+
} else {
176+
return nil
177+
}
178+
}
179+
}
180+
}

0 commit comments

Comments
 (0)