Skip to content

Commit 1bd62d6

Browse files
committed
fixed func slaveInfoFieldByName range panic
1 parent 5269ebf commit 1bd62d6

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

pkg/client/redis/client.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func slaveInfoFieldByName(name string, slaveInfoBlob interface{}) string {
117117
slaveInfo := slaveInfoBlob.([]interface{})
118118
infoLens := len(slaveInfo)
119119
i := 0
120-
for i < infoLens {
120+
for i+1 < infoLens {
121121
stringValue := slaveInfo[i].(string)
122122
if stringValue == name {
123123
return slaveInfo[i+1].(string)

pkg/client/redis/client_test.go

+18
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ func TestGetAllRedisConfig(t *testing.T) {
3737
func Test_slaveInfoFieldByName(t *testing.T) {
3838
slaveInfoBlobA := []interface{}{"name", "[xxxxA]:6379", "ip", "xxxxA", "port", "6379", "runid", "6f792839ab551e8dbec58e0eb3b3838d14f19a37", "flags", "slave", "link-pending-commands", "1", "link-refcount", "1", "last-ping-sent", "0", "last-ok-ping-reply", "1055", "last-ping-reply", "1055", "down-after-milliseconds", "5000", "info-refresh", "2074", "role-reported", "slave", "role-reported-time", "2983115", "master-link-down-time", "0", "master-link-status", "ok", "master-host", "xxxxA", "master-port", "6379", "slave-priority", "1", "slave-repl-offset", "124614695"}
3939
slaveInfoBlobB := []interface{}{"name", "[xxxxB]:6371", "ip", "xxxxB", "port", "6371", "runid", "fake_slave_8bb90711-8f37-44e8-b3b2-589af", "flags", "slave", "link-pending-commands", "1", "link-refcount", "1", "last-ping-sent", "0", "last-ok-ping-reply", "1055", "last-ping-reply", "1055", "down-after-milliseconds", "5000", "info-refresh", "2075", "role-reported", "slave", "role-reported-time", "2983114", "master-link-down-time", "0", "master-link-status", "ok", "master-host", "xxxxB", "master-port", "6379", "slave-priority", "0", "slave-repl-offset", "124614695"}
40+
slaveInfoBlobC := []interface{}{"name", "[xxxxB]:6371", "ip", "slave-priority", "slave-priority", "100"}
41+
slaveInfoBlobD := []interface{}{"name", "[xxxxB]:6371", "ip", "xxxxB", "slave-priority"}
4042
type args struct {
4143
name string
4244
slaveInfoBlob interface{}
@@ -62,6 +64,22 @@ func Test_slaveInfoFieldByName(t *testing.T) {
6264
},
6365
want: "0",
6466
},
67+
{
68+
name: "slaveC",
69+
args: args{
70+
name: "slave-priority",
71+
slaveInfoBlob: slaveInfoBlobC,
72+
},
73+
want: "100",
74+
},
75+
{
76+
name: "slaveD",
77+
args: args{
78+
name: "slave-priority",
79+
slaveInfoBlob: slaveInfoBlobD,
80+
},
81+
want: "",
82+
},
6583
}
6684
for _, tt := range tests {
6785
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)