Skip to content

Commit e6d0995

Browse files
author
flike
committed
bugfix[salve add/del]
1 parent 8742f7a commit e6d0995

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

backend/node.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ func (n *Node) AddSlave(addr string) error {
176176
}
177177
n.Lock()
178178
defer n.Unlock()
179+
for _, v := range n.Slave {
180+
if v.addr == addr {
181+
return errors.ErrSlaveExist
182+
}
183+
}
179184
addrAndWeight := strings.Split(addr, WeightSplit)
180185
if len(addrAndWeight) == 2 {
181186
weight, err = strconv.Atoi(addrAndWeight[1])
@@ -196,12 +201,22 @@ func (n *Node) AddSlave(addr string) error {
196201
}
197202

198203
func (n *Node) DeleteSlave(addr string) error {
204+
var i int
199205
n.Lock()
200206
defer n.Unlock()
201207
slaveCount := len(n.Slave)
202208
if slaveCount == 0 {
203209
return errors.ErrNoSlaveDB
204-
} else if slaveCount == 1 {
210+
}
211+
for i = 0; i < slaveCount; i++ {
212+
if n.Slave[i].addr == addr {
213+
break
214+
}
215+
}
216+
if i == slaveCount {
217+
return errors.ErrSlaveNotExist
218+
}
219+
if slaveCount == 1 {
205220
n.Slave = nil
206221
n.SlaveWeights = nil
207222
n.RoundRobinQ = nil
@@ -210,7 +225,7 @@ func (n *Node) DeleteSlave(addr string) error {
210225

211226
s := make([]*DB, 0, slaveCount-1)
212227
sw := make([]int, 0, slaveCount-1)
213-
for i := 0; i < slaveCount; i++ {
228+
for i = 0; i < slaveCount; i++ {
214229
if n.Slave[i].addr != addr {
215230
s = append(s, n.Slave[i])
216231
sw = append(sw, n.SlaveWeights[i])

core/errors/errors.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,6 @@ var (
6464
ErrDateIllegal = errors.New("date format illegal")
6565
ErrDateRangeIllegal = errors.New("date range format illegal")
6666
ErrDateRangeCount = errors.New("date range count is not equal")
67+
ErrSlaveExist = errors.New("slave has exist")
68+
ErrSlaveNotExist = errors.New("slave has not exist")
6769
)

0 commit comments

Comments
 (0)