From 259079da90d4455782e8472fe96b16d87732efdc Mon Sep 17 00:00:00 2001 From: ethanvc Date: Fri, 12 May 2023 18:26:31 +0800 Subject: [PATCH 1/3] make error message more reasonable --- internal/pool/pool.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/pool/pool.go b/internal/pool/pool.go index bb9b14beb..69f627041 100644 --- a/internal/pool/pool.go +++ b/internal/pool/pool.go @@ -296,8 +296,19 @@ func (p *ConnPool) waitTurn(ctx context.Context) error { default: } + var realPoolTimeout time.Duration + timer := timers.Get().(*time.Timer) - timer.Reset(p.cfg.PoolTimeout) + deadline, ok := ctx.Deadline() + if ok { + realPoolTimeout = deadline.Sub(time.Now()) + if realPoolTimeout > p.cfg.PoolTimeout { + realPoolTimeout = p.cfg.PoolTimeout + } + } else { + realPoolTimeout = p.cfg.PoolTimeout + } + timer.Reset(realPoolTimeout) select { case <-ctx.Done(): From b15a42158e5e5b2c6ba648976534b0327b7493c5 Mon Sep 17 00:00:00 2001 From: ethanvc Date: Fri, 12 May 2023 18:34:38 +0800 Subject: [PATCH 2/3] make error message more reasonable --- internal/pool/pool.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/pool/pool.go b/internal/pool/pool.go index 69f627041..b139bba91 100644 --- a/internal/pool/pool.go +++ b/internal/pool/pool.go @@ -297,7 +297,6 @@ func (p *ConnPool) waitTurn(ctx context.Context) error { } var realPoolTimeout time.Duration - timer := timers.Get().(*time.Timer) deadline, ok := ctx.Deadline() if ok { From 93302afc51a1eaaf88b1e652a4eec554e12d2938 Mon Sep 17 00:00:00 2001 From: ethanvc Date: Fri, 12 May 2023 18:58:23 +0800 Subject: [PATCH 3/3] make error message more reasonable --- internal/pool/pool.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/pool/pool.go b/internal/pool/pool.go index b139bba91..6f009175c 100644 --- a/internal/pool/pool.go +++ b/internal/pool/pool.go @@ -300,7 +300,7 @@ func (p *ConnPool) waitTurn(ctx context.Context) error { timer := timers.Get().(*time.Timer) deadline, ok := ctx.Deadline() if ok { - realPoolTimeout = deadline.Sub(time.Now()) + realPoolTimeout = time.Until(deadline) if realPoolTimeout > p.cfg.PoolTimeout { realPoolTimeout = p.cfg.PoolTimeout }