Skip to content

Commit 0c03d24

Browse files
authored
Merge pull request #6 from jacobvosmaer/jv-stylistic-changes
Stylistic improvements
2 parents 9e2b40e + b6eae5d commit 0c03d24

File tree

1 file changed

+28
-59
lines changed

1 file changed

+28
-59
lines changed

sentinel.go

+28-59
Original file line numberDiff line numberDiff line change
@@ -148,31 +148,22 @@ func (s *Sentinel) defaultPool(addr string) *redis.Pool {
148148
}
149149
}
150150

151-
func (s *Sentinel) get(addr string) redis.Conn {
152-
pool := s.poolForAddr(addr)
153-
return pool.Get()
154-
}
155-
156151
func (s *Sentinel) poolForAddr(addr string) *redis.Pool {
157152
s.mu.Lock()
158-
if s.pools == nil {
159-
s.pools = make(map[string]*redis.Pool)
160-
}
161-
pool, ok := s.pools[addr]
162-
if ok {
163-
s.mu.Unlock()
153+
defer s.mu.Unlock()
154+
if pool, ok := s.pools[addr]; ok {
164155
return pool
165156
}
166157
s.mu.Unlock()
167158
newPool := s.newPool(addr)
168159
s.mu.Lock()
169-
p, ok := s.pools[addr]
170-
if ok {
171-
s.mu.Unlock()
172-
return p
160+
if pool, ok := s.pools[addr]; ok {
161+
return pool
162+
}
163+
if s.pools == nil {
164+
s.pools = make(map[string]*redis.Pool)
173165
}
174166
s.pools[addr] = newPool
175-
s.mu.Unlock()
176167
return newPool
177168
}
178169

@@ -186,10 +177,8 @@ func (s *Sentinel) newPool(addr string) *redis.Pool {
186177
// close connection pool to Sentinel.
187178
// Lock must be hold by caller.
188179
func (s *Sentinel) close() {
189-
if s.pools != nil {
190-
for _, pool := range s.pools {
191-
pool.Close()
192-
}
180+
for _, pool := range s.pools {
181+
pool.Close()
193182
}
194183
s.pools = nil
195184
}
@@ -202,7 +191,7 @@ func (s *Sentinel) doUntilSuccess(f func(redis.Conn) (interface{}, error)) (inte
202191
var lastErr error
203192

204193
for _, addr := range addrs {
205-
conn := s.get(addr)
194+
conn := s.poolForAddr(addr).Get()
206195
reply, err := f(conn)
207196
conn.Close()
208197
if err != nil {
@@ -219,24 +208,16 @@ func (s *Sentinel) doUntilSuccess(f func(redis.Conn) (interface{}, error)) (inte
219208

220209
// MasterAddr returns an address of current Redis master instance.
221210
func (s *Sentinel) MasterAddr() (string, error) {
222-
res, err := s.doUntilSuccess(func(c redis.Conn) (interface{}, error) {
211+
return redis.String(s.doUntilSuccess(func(c redis.Conn) (interface{}, error) {
223212
return queryForMaster(c, s.MasterName)
224-
})
225-
if err != nil {
226-
return "", err
227-
}
228-
return res.(string), nil
213+
}))
229214
}
230215

231216
// SlaveAddrs returns a slice with known slave addresses of current master instance.
232217
func (s *Sentinel) SlaveAddrs() ([]string, error) {
233-
res, err := s.doUntilSuccess(func(c redis.Conn) (interface{}, error) {
218+
return redis.Strings(s.doUntilSuccess(func(c redis.Conn) (interface{}, error) {
234219
return queryForSlaveAddrs(c, s.MasterName)
235-
})
236-
if err != nil {
237-
return nil, err
238-
}
239-
return res.([]string), nil
220+
}))
240221
}
241222

242223
// Slave represents a Redis slave instance which is known by Sentinel.
@@ -269,13 +250,9 @@ func (s *Sentinel) Slaves() ([]*Slave, error) {
269250

270251
// SentinelAddrs returns a slice of known Sentinel addresses Sentinel server aware of.
271252
func (s *Sentinel) SentinelAddrs() ([]string, error) {
272-
res, err := s.doUntilSuccess(func(c redis.Conn) (interface{}, error) {
253+
return redis.Strings(s.doUntilSuccess(func(c redis.Conn) (interface{}, error) {
273254
return queryForSentinels(c, s.MasterName)
274-
})
275-
if err != nil {
276-
return nil, err
277-
}
278-
return res.([]string), nil
255+
}))
279256
}
280257

281258
// Discover allows to update list of known Sentinel addresses. From docs:
@@ -313,10 +290,7 @@ func (s *Sentinel) Close() error {
313290
// then you are OK.
314291
func TestRole(c redis.Conn, expectedRole string) bool {
315292
role, err := getRole(c)
316-
if err != nil || role != expectedRole {
317-
return false
318-
}
319-
return true
293+
return err == nil && role == expectedRole
320294
}
321295

322296
// getRole is a convenience function supplied to query an instance (master or
@@ -351,9 +325,9 @@ func queryForSlaveAddrs(conn redis.Conn, masterName string) ([]string, error) {
351325
if err != nil {
352326
return nil, err
353327
}
354-
slaveAddrs := make([]string, 0)
355-
for _, slave := range slaves {
356-
slaveAddrs = append(slaveAddrs, slave.Addr())
328+
slaveAddrs := make([]string, len(slaves))
329+
for i, slave := range slaves {
330+
slaveAddrs[i] = slave.Addr()
357331
}
358332
return slaveAddrs, nil
359333
}
@@ -363,18 +337,13 @@ func queryForSlaves(conn redis.Conn, masterName string) ([]*Slave, error) {
363337
if err != nil {
364338
return nil, err
365339
}
366-
slaves := make([]*Slave, 0)
367-
for _, a := range res {
340+
slaves := make([]*Slave, len(res))
341+
for i, a := range res {
368342
sm, err := redis.StringMap(a, err)
369343
if err != nil {
370-
return slaves, err
371-
}
372-
slave := &Slave{
373-
ip: sm["ip"],
374-
port: sm["port"],
375-
flags: sm["flags"],
344+
return nil, err
376345
}
377-
slaves = append(slaves, slave)
346+
slaves[i] = &Slave{ip: sm["ip"], port: sm["port"], flags: sm["flags"]}
378347
}
379348
return slaves, nil
380349
}
@@ -384,13 +353,13 @@ func queryForSentinels(conn redis.Conn, masterName string) ([]string, error) {
384353
if err != nil {
385354
return nil, err
386355
}
387-
sentinels := make([]string, 0)
388-
for _, a := range res {
356+
sentinels := make([]string, len(res))
357+
for i, a := range res {
389358
sm, err := redis.StringMap(a, err)
390359
if err != nil {
391-
return sentinels, err
360+
return nil, err
392361
}
393-
sentinels = append(sentinels, fmt.Sprintf("%s:%s", sm["ip"], sm["port"]))
362+
sentinels[i] = fmt.Sprintf("%s:%s", sm["ip"], sm["port"])
394363
}
395364
return sentinels, nil
396365
}

0 commit comments

Comments
 (0)