From d40cb7e2b9e68cc4819cda8543bd3a1f5d29b006 Mon Sep 17 00:00:00 2001 From: sewi-cpan Date: Fri, 8 Nov 2019 13:06:14 +0100 Subject: [PATCH] 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. --- client/pool.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/client/pool.go b/client/pool.go index 6a205cd..1044825 100644 --- a/client/pool.go +++ b/client/pool.go @@ -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 }