From 59b3addd8c1975060d2d4139c35c53080e1efc3e Mon Sep 17 00:00:00 2001 From: Kevin Manley Date: Wed, 16 Sep 2020 10:22:15 -0400 Subject: [PATCH] fix data race rethinkdb/rethinkdb-go#488 --- pool.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pool.go b/pool.go index 3b13387b..ab0fa246 100644 --- a/pool.go +++ b/pool.go @@ -107,6 +107,9 @@ func (p *Pool) Close() error { } func (p *Pool) conn() (*Connection, error) { + p.mu.Lock() + defer p.mu.Unlock() + if atomic.LoadInt32(&p.closed) == poolIsClosed { return nil, errPoolClosed } @@ -120,9 +123,6 @@ func (p *Pool) conn() (*Connection, error) { var err error if p.conns[pos] == nil { - p.mu.Lock() - defer p.mu.Unlock() - if p.conns[pos] == nil { p.conns[pos], err = p.connFactory(p.host.String(), p.opts) if err != nil { @@ -131,9 +131,6 @@ func (p *Pool) conn() (*Connection, error) { } } else if p.conns[pos].isBad() { // connBad connection needs to be reconnected - p.mu.Lock() - defer p.mu.Unlock() - p.conns[pos], err = p.connFactory(p.host.String(), p.opts) if err != nil { return nil, err