@@ -176,6 +176,11 @@ func (n *Node) AddSlave(addr string) error {
176
176
}
177
177
n .Lock ()
178
178
defer n .Unlock ()
179
+ for _ , v := range n .Slave {
180
+ if v .addr == addr {
181
+ return errors .ErrSlaveExist
182
+ }
183
+ }
179
184
addrAndWeight := strings .Split (addr , WeightSplit )
180
185
if len (addrAndWeight ) == 2 {
181
186
weight , err = strconv .Atoi (addrAndWeight [1 ])
@@ -196,12 +201,22 @@ func (n *Node) AddSlave(addr string) error {
196
201
}
197
202
198
203
func (n * Node ) DeleteSlave (addr string ) error {
204
+ var i int
199
205
n .Lock ()
200
206
defer n .Unlock ()
201
207
slaveCount := len (n .Slave )
202
208
if slaveCount == 0 {
203
209
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 {
205
220
n .Slave = nil
206
221
n .SlaveWeights = nil
207
222
n .RoundRobinQ = nil
@@ -210,7 +225,7 @@ func (n *Node) DeleteSlave(addr string) error {
210
225
211
226
s := make ([]* DB , 0 , slaveCount - 1 )
212
227
sw := make ([]int , 0 , slaveCount - 1 )
213
- for i : = 0 ; i < slaveCount ; i ++ {
228
+ for i = 0 ; i < slaveCount ; i ++ {
214
229
if n .Slave [i ].addr != addr {
215
230
s = append (s , n .Slave [i ])
216
231
sw = append (sw , n .SlaveWeights [i ])
0 commit comments