From b3d195467d1c93e3bf6b4aa519ee3f32d0b7ced8 Mon Sep 17 00:00:00 2001 From: Oleg Stotskiy Date: Mon, 5 Feb 2024 17:55:52 +0400 Subject: [PATCH] fix ConnPool race in newConn --- internal/pool/pool.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/pool/pool.go b/internal/pool/pool.go index 986c05d0ad..5214448b4b 100644 --- a/internal/pool/pool.go +++ b/internal/pool/pool.go @@ -168,9 +168,12 @@ func (p *ConnPool) newConn(ctx context.Context, pooled bool) (*Conn, error) { return nil, ErrClosed } + p.connsMu.Lock() if p.cfg.MaxActiveConns > 0 && p.poolSize >= p.cfg.MaxActiveConns { + p.connsMu.Unlock() return nil, ErrPoolExhausted } + p.connsMu.Unlock() cn, err := p.dialConn(ctx, pooled) if err != nil {