From 31906d4105be50969fc4dbe779df8b8940c3a6db Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Thu, 19 Aug 2021 23:40:46 +0800 Subject: [PATCH] internal/client: fix recycle idle connection block sending request (#270) Signed-off-by: tiancaiamao --- internal/client/client.go | 4 +--- internal/client/client_batch.go | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/client/client.go b/internal/client/client.go index bd619fbc..3de1eec5 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -365,9 +365,7 @@ func (c *RPCClient) SendRequest(ctx context.Context, addr string, req *tikvrpc.R start := time.Now() if atomic.CompareAndSwapUint32(&c.idleNotify, 1, 0) { - c.recycleMu.Lock() - c.recycleIdleConnArray() - c.recycleMu.Unlock() + go c.recycleIdleConnArray() } // TiDB will not send batch commands to TiFlash, to resolve the conflict with Batch Cop Request. diff --git a/internal/client/client_batch.go b/internal/client/client_batch.go index d13fa43b..f8b581aa 100644 --- a/internal/client/client_batch.go +++ b/internal/client/client_batch.go @@ -795,6 +795,9 @@ func sendBatchRequest( } func (c *RPCClient) recycleIdleConnArray() { + c.recycleMu.Lock() + defer c.recycleMu.Unlock() + var addrs []string c.RLock() for _, conn := range c.conns {