Skip to content

Commit 4bea2da

Browse files
committed
feature: ignore slave whose slave-priority = 0
1 parent f4cf6ef commit 4bea2da

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

pkg/apis/redis/v1beta1/validate.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ const (
1414
defaultRedisNumber = 3
1515
defaultSentinelNumber = 3
1616
defaultRedisImage = "redis:5.0.4-alpine"
17+
18+
defaultSlavePriority = "1"
1719
)
1820

1921
var (
@@ -29,7 +31,7 @@ func (r *RedisCluster) Validate() error {
2931
if r.Spec.Size == 0 {
3032
r.Spec.Size = defaultRedisNumber
3133
} else if r.Spec.Size < defaultRedisNumber {
32-
return errors.New("number of redises in spec is less than the minimum")
34+
return errors.New("number of redis in spec is less than the minimum")
3335
}
3436

3537
if r.Spec.Sentinel.Replicas == 0 {
@@ -54,6 +56,9 @@ func (r *RedisCluster) Validate() error {
5456
r.Spec.Config = make(map[string]string)
5557
}
5658

59+
// https://github.com/ucloud/redis-operator/issues/6
60+
r.Spec.Config["slave-priority"] = defaultSlavePriority
61+
5762
if !r.Spec.DisablePersistence {
5863
enablePersistence(r.Spec.Config)
5964
} else {

pkg/client/redis/client.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"fmt"
66
"net"
7+
"reflect"
78
"regexp"
89
"strconv"
910
"strings"
@@ -92,17 +93,25 @@ func (c *client) GetNumberSentinelSlavesInMemory(ip string, auth *util.AuthConfi
9293
return 0, err
9394
}
9495

95-
if err2 := isSentinelReady(info); err2 != nil {
96-
return 0, err2
97-
}
98-
match := slaveNumberRE.FindStringSubmatch(info)
99-
if len(match) == 0 {
100-
return 0, errors.New("slaves regex not found")
96+
if err = isSentinelReady(info); err != nil {
97+
return 0, err
10198
}
102-
nSlaves, err := strconv.Atoi(match[1])
99+
100+
cmd := rediscli.NewSliceCmd("sentinel", "slaves", masterName)
101+
rClient.Process(cmd)
102+
slaveInfoBlobs, err := cmd.Result()
103103
if err != nil {
104104
return 0, err
105105
}
106+
nSlaves := len(slaveInfoBlobs)
107+
for _, slaveInfoBlob := range slaveInfoBlobs {
108+
slaveInfo := reflect.ValueOf(slaveInfoBlob)
109+
slavePriority := fmt.Sprintf("%+v", slaveInfo.Index(37))
110+
if slavePriority == "0" {
111+
nSlaves -= 1
112+
}
113+
}
114+
106115
return int32(nSlaves), nil
107116
}
108117

0 commit comments

Comments
 (0)