Remove client locking from pool.go
client.go does do `client.Lock()` itself when it's needed. Doing the same in pool.go results in an dead lock.
This commit is contained in:
parent
81d00aa9ce
commit
d40cb7e2b9
@ -94,8 +94,6 @@ func (pool *Pool) Remove(addr string) {
|
||||
func (pool *Pool) Do(funcname string, data []byte,
|
||||
flag byte, h ResponseHandler) (addr, handle string, err error) {
|
||||
client := pool.selectServer()
|
||||
client.Lock()
|
||||
defer client.Unlock()
|
||||
handle, err = client.Do(funcname, data, flag, h)
|
||||
addr = client.addr
|
||||
return
|
||||
@ -104,8 +102,6 @@ func (pool *Pool) Do(funcname string, data []byte,
|
||||
func (pool *Pool) DoBg(funcname string, data []byte,
|
||||
flag byte) (addr, handle string, err error) {
|
||||
client := pool.selectServer()
|
||||
client.Lock()
|
||||
defer client.Unlock()
|
||||
handle, err = client.DoBg(funcname, data, flag)
|
||||
addr = client.addr
|
||||
return
|
||||
@ -115,8 +111,6 @@ func (pool *Pool) DoBg(funcname string, data []byte,
|
||||
// !!!Not fully tested.!!!
|
||||
func (pool *Pool) Status(addr, handle string) (status *Status, err error) {
|
||||
if client, ok := pool.Clients[addr]; ok {
|
||||
client.Lock()
|
||||
defer client.Unlock()
|
||||
status, err = client.Status(handle)
|
||||
} else {
|
||||
err = ErrNotFound
|
||||
@ -136,8 +130,6 @@ func (pool *Pool) Echo(addr string, data []byte) (echo []byte, err error) {
|
||||
return
|
||||
}
|
||||
}
|
||||
client.Lock()
|
||||
defer client.Unlock()
|
||||
echo, err = client.Echo(data)
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user