@@ -26,7 +26,8 @@ import (
2626// ServerSelector is the interface that selects a memcache server
2727// as a function of the item's key.
2828//
29- // All ServerSelector implementations must be threadsafe.
29+ // All ServerSelector implementations must be safe for concurrent use
30+ // by multiple goroutines.
3031type ServerSelector interface {
3132 // PickServer returns the server address that a given item
3233 // should be shared onto.
@@ -36,12 +37,12 @@ type ServerSelector interface {
3637
3738// ServerList is a simple ServerSelector. Its zero value is usable.
3839type ServerList struct {
39- lk sync.RWMutex
40+ mu sync.RWMutex
4041 addrs []net.Addr
4142}
4243
4344// SetServers changes a ServerList's set of servers at runtime and is
44- // threadsafe .
45+ // safe for concurrent use by multiple goroutines .
4546//
4647// Each server is given equal weight. A server is given more weight
4748// if it's listed multiple times.
@@ -67,16 +68,16 @@ func (ss *ServerList) SetServers(servers ...string) error {
6768 }
6869 }
6970
70- ss .lk .Lock ()
71- defer ss .lk .Unlock ()
71+ ss .mu .Lock ()
72+ defer ss .mu .Unlock ()
7273 ss .addrs = naddr
7374 return nil
7475}
7576
7677// Each iterates over each server calling the given function
7778func (ss * ServerList ) Each (f func (net.Addr ) error ) error {
78- ss .lk .RLock ()
79- defer ss .lk .RUnlock ()
79+ ss .mu .RLock ()
80+ defer ss .mu .RUnlock ()
8081 for _ , a := range ss .addrs {
8182 if err := f (a ); nil != err {
8283 return err
@@ -86,8 +87,8 @@ func (ss *ServerList) Each(f func(net.Addr) error) error {
8687}
8788
8889func (ss * ServerList ) PickServer (key string ) (net.Addr , error ) {
89- ss .lk .RLock ()
90- defer ss .lk .RUnlock ()
90+ ss .mu .RLock ()
91+ defer ss .mu .RUnlock ()
9192 if len (ss .addrs ) == 0 {
9293 return nil , ErrNoServers
9394 }
0 commit comments