Skip to content

Commit f121cb0

Browse files
committed
fixed reset sentinel serial
1 parent ea37b5c commit f121cb0

File tree

3 files changed

+52
-64
lines changed

3 files changed

+52
-64
lines changed

pkg/controller/rediscluster/controller.go

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ package rediscluster
33
import (
44
"context"
55
"fmt"
6-
"github.com/ucloud/redis-operator/pkg/metrics"
76
"time"
87

9-
appsv1 "k8s.io/api/apps/v1"
108
"k8s.io/apimachinery/pkg/api/errors"
119
"k8s.io/apimachinery/pkg/apis/meta/v1"
1210
"k8s.io/apimachinery/pkg/runtime"
@@ -25,11 +23,12 @@ import (
2523
"github.com/ucloud/redis-operator/pkg/client/redis"
2624
"github.com/ucloud/redis-operator/pkg/controller/clustercache"
2725
"github.com/ucloud/redis-operator/pkg/controller/service"
26+
"github.com/ucloud/redis-operator/pkg/metrics"
2827
"github.com/ucloud/redis-operator/pkg/util"
2928
)
3029

3130
// ReconcileTime is the delay between reconciliations
32-
const ReconcileTime = 40 * time.Second
31+
const ReconcileTime = 60 * time.Second
3332
const MaxConcurrentReconciles = 2
3433

3534
var log = logf.Log.WithName("controller_rediscluster")
@@ -120,38 +119,38 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
120119
return err
121120
}
122121

123-
ownerPred := predicate.Funcs{
124-
UpdateFunc: func(e event.UpdateEvent) bool {
125-
return false
126-
},
127-
DeleteFunc: func(e event.DeleteEvent) bool {
128-
log.WithValues("namespace", e.Meta.GetNamespace(), "kind", e.Object.GetObjectKind().GroupVersionKind().Kind, "name", e.Meta.GetName()).
129-
V(3).Info("dependent resource delete")
130-
// Evaluates to false if the object has been confirmed deleted.
131-
return !e.DeleteStateUnknown
132-
},
133-
CreateFunc: func(e event.CreateEvent) bool {
134-
return false
135-
},
136-
}
137-
138-
// Watch for changes to redisCluster StatefulSet secondary resources
139-
err = c.Watch(&source.Kind{Type: &appsv1.StatefulSet{}}, &handler.EnqueueRequestForOwner{
140-
IsController: true,
141-
OwnerType: &redisv1beta1.RedisCluster{},
142-
}, ownerPred)
143-
if err != nil {
144-
return err
145-
}
146-
147-
// Watch for changes to redisCluster Deployment secondary resources
148-
err = c.Watch(&source.Kind{Type: &appsv1.Deployment{}}, &handler.EnqueueRequestForOwner{
149-
IsController: true,
150-
OwnerType: &redisv1beta1.RedisCluster{},
151-
}, ownerPred)
152-
if err != nil {
153-
return err
154-
}
122+
//ownerPred := predicate.Funcs{
123+
// UpdateFunc: func(e event.UpdateEvent) bool {
124+
// return false
125+
// },
126+
// DeleteFunc: func(e event.DeleteEvent) bool {
127+
// log.WithValues("namespace", e.Meta.GetNamespace(), "kind", e.Object.GetObjectKind().GroupVersionKind().Kind, "name", e.Meta.GetName()).
128+
// V(3).Info("dependent resource delete")
129+
// // Evaluates to false if the object has been confirmed deleted.
130+
// return !e.DeleteStateUnknown
131+
// },
132+
// CreateFunc: func(e event.CreateEvent) bool {
133+
// return false
134+
// },
135+
//}
136+
//
137+
//// Watch for changes to redisCluster StatefulSet secondary resources
138+
//err = c.Watch(&source.Kind{Type: &appsv1.StatefulSet{}}, &handler.EnqueueRequestForOwner{
139+
// IsController: true,
140+
// OwnerType: &redisv1beta1.RedisCluster{},
141+
//}, ownerPred)
142+
//if err != nil {
143+
// return err
144+
//}
145+
//
146+
//// Watch for changes to redisCluster Deployment secondary resources
147+
//err = c.Watch(&source.Kind{Type: &appsv1.Deployment{}}, &handler.EnqueueRequestForOwner{
148+
// IsController: true,
149+
// OwnerType: &redisv1beta1.RedisCluster{},
150+
//}, ownerPred)
151+
//if err != nil {
152+
// return err
153+
//}
155154

156155
return nil
157156
}
@@ -199,18 +198,18 @@ func (r *ReconcileRedisCluster) Reconcile(request reconcile.Request) (reconcile.
199198

200199
if err = r.handler.Do(instance); err != nil {
201200
if err.Error() == needRequeueMsg {
202-
return reconcile.Result{RequeueAfter: 10 * time.Second}, nil
201+
return reconcile.Result{RequeueAfter: 20 * time.Second}, nil
203202
}
204203
reqLogger.Error(err, "Reconcile handler")
205204
return reconcile.Result{}, err
206205
}
207206

208207
if err = r.handler.rcChecker.CheckSentinelReadyReplicas(instance); err != nil {
209208
reqLogger.Info(err.Error())
210-
return reconcile.Result{RequeueAfter: 10 * time.Second}, nil
209+
return reconcile.Result{RequeueAfter: 20 * time.Second}, nil
211210
}
212211

213-
return reconcile.Result{}, nil
212+
return reconcile.Result{RequeueAfter: ReconcileTime}, nil
214213
}
215214

216215
func shoudManage(meta v1.Object) bool {

pkg/controller/service/check.go

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -130,34 +130,22 @@ func (r *RedisClusterChecker) CheckAllSlavesFromMaster(master string, rc *redisv
130130

131131
// CheckSentinelNumberInMemory controls that sentinels have only the living sentinels on its memory.
132132
func (r *RedisClusterChecker) CheckSentinelNumberInMemory(sentinel string, rc *redisv1beta1.RedisCluster, auth *util.AuthConfig) error {
133-
sips, err := r.GetSentinelsIPs(rc)
133+
nSentinels, err := r.redisClient.GetNumberSentinelsInMemory(sentinel, auth)
134134
if err != nil {
135135
return err
136-
}
137-
for _, sip := range sips {
138-
nSentinels, err := r.redisClient.GetNumberSentinelsInMemory(sip, auth)
139-
if err != nil {
140-
return err
141-
} else if nSentinels != rc.Spec.Sentinel.Replicas {
142-
return errors.New("sentinels in memory mismatch")
143-
}
136+
} else if nSentinels != rc.Spec.Sentinel.Replicas {
137+
return errors.New("sentinels in memory mismatch")
144138
}
145139
return nil
146140
}
147141

148142
// CheckSentinelSlavesNumberInMemory controls that sentinels have only the spected slaves number.
149143
func (r *RedisClusterChecker) CheckSentinelSlavesNumberInMemory(sentinel string, rc *redisv1beta1.RedisCluster, auth *util.AuthConfig) error {
150-
sips, err := r.GetSentinelsIPs(rc)
144+
nSlaves, err := r.redisClient.GetNumberSentinelSlavesInMemory(sentinel, auth)
151145
if err != nil {
152146
return err
153-
}
154-
for _, sip := range sips {
155-
nSlaves, err := r.redisClient.GetNumberSentinelSlavesInMemory(sip, auth)
156-
if err != nil {
157-
return err
158-
} else if nSlaves != rc.Spec.Size-1 {
159-
return errors.New("sentinel's slaves in memory mismatch")
160-
}
147+
} else if nSlaves != rc.Spec.Size-1 {
148+
return errors.New("sentinel's slaves in memory mismatch")
161149
}
162150
return nil
163151
}

pkg/controller/service/client.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func (r *RedisClusterKubeClient) EnsureSentinelStatefulset(rc *redisv1beta1.Redi
8989
return err
9090
}
9191

92-
if shouldUpdateRedis(rc, oldSs.Spec.Template.Spec.Containers[0], *oldSs.Spec.Replicas) {
92+
if shouldUpdateRedis(rc.Spec.Sentinel.Resources, oldSs.Spec.Template.Spec.Containers[0].Resources, rc.Spec.Sentinel.Replicas, *oldSs.Spec.Replicas) {
9393
ss := generateSentinelStatefulSet(rc, labels, ownerRefs)
9494
return r.K8SService.UpdateStatefulSet(rc.Namespace, ss)
9595
}
@@ -122,27 +122,28 @@ func (r *RedisClusterKubeClient) EnsureRedisStatefulset(rc *redisv1beta1.RedisCl
122122
return err
123123
}
124124

125-
if shouldUpdateRedis(rc, oldSs.Spec.Template.Spec.Containers[0], *oldSs.Spec.Replicas) {
125+
if shouldUpdateRedis(rc.Spec.Resources, oldSs.Spec.Template.Spec.Containers[0].Resources,
126+
rc.Spec.Size, *oldSs.Spec.Replicas) {
126127
ss := generateRedisStatefulSet(rc, labels, ownerRefs, annotationIstioInject)
127128
return r.K8SService.UpdateStatefulSet(rc.Namespace, ss)
128129
}
129130
return nil
130131
}
131132

132-
func shouldUpdateRedis(rc *redisv1beta1.RedisCluster, containter corev1.Container, replicas int32) bool {
133-
if replicas != rc.Spec.Size {
133+
func shouldUpdateRedis(expectResource, containterResource corev1.ResourceRequirements, expectSize, replicas int32) bool {
134+
if expectSize != replicas {
134135
return true
135136
}
136-
if result := containter.Resources.Requests.Cpu().Cmp(*rc.Spec.Resources.Requests.Cpu()); result != 0 {
137+
if result := containterResource.Requests.Cpu().Cmp(*expectResource.Requests.Cpu()); result != 0 {
137138
return true
138139
}
139-
if result := containter.Resources.Requests.Memory().Cmp(*rc.Spec.Resources.Requests.Memory()); result != 0 {
140+
if result := containterResource.Requests.Memory().Cmp(*expectResource.Requests.Memory()); result != 0 {
140141
return true
141142
}
142-
if result := containter.Resources.Limits.Cpu().Cmp(*rc.Spec.Resources.Limits.Cpu()); result != 0 {
143+
if result := containterResource.Limits.Cpu().Cmp(*expectResource.Limits.Cpu()); result != 0 {
143144
return true
144145
}
145-
if result := containter.Resources.Limits.Memory().Cmp(*rc.Spec.Resources.Limits.Memory()); result != 0 {
146+
if result := containterResource.Limits.Memory().Cmp(*expectResource.Limits.Memory()); result != 0 {
146147
return true
147148
}
148149
return false

0 commit comments

Comments
 (0)