From e14fc757c6b4119026f7ef7ab46a915e5690c4fe Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Thu, 7 Sep 2023 19:05:23 -0500 Subject: [PATCH] i <3 race detector --- lib/gat/pool/conn.go | 2 +- lib/gat/pool/pools/session/pooler.go | 8 +++----- lib/gat/pool/pools/transaction/pooler.go | 4 ---- pgbouncer.ini | 1 + 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/lib/gat/pool/conn.go b/lib/gat/pool/conn.go index 9498b1b8..60ac051b 100644 --- a/lib/gat/pool/conn.go +++ b/lib/gat/pool/conn.go @@ -92,7 +92,7 @@ func (T *Conn) SetState(state metrics.ConnState, peer uuid.UUID) { func (T *Conn) GetState() (state metrics.ConnState, peer uuid.UUID, since time.Time) { T.mu.RLock() - defer T.mu.Unlock() + defer T.mu.RUnlock() state = T.state peer = T.peer since = T.since diff --git a/lib/gat/pool/pools/session/pooler.go b/lib/gat/pool/pools/session/pooler.go index 22539867..26b28b9d 100644 --- a/lib/gat/pool/pools/session/pooler.go +++ b/lib/gat/pool/pools/session/pooler.go @@ -94,12 +94,10 @@ func (T *Pooler) Acquire(_ uuid.UUID, mode pool.SyncMode) uuid.UUID { } } -func (*Pooler) ReleaseAfterTransaction() bool { - // servers are released when the client is removed - return false -} - func (T *Pooler) Release(server uuid.UUID) { + T.mu.Lock() + defer T.mu.Unlock() + // check if server was removed if _, ok := T.servers[server]; !ok { return diff --git a/lib/gat/pool/pools/transaction/pooler.go b/lib/gat/pool/pools/transaction/pooler.go index 2f09e64a..25fec284 100644 --- a/lib/gat/pool/pools/transaction/pooler.go +++ b/lib/gat/pool/pools/transaction/pooler.go @@ -39,10 +39,6 @@ func (T *Pooler) Acquire(client uuid.UUID, sync pool.SyncMode) uuid.UUID { } } -func (*Pooler) ReleaseAfterTransaction() bool { - return true -} - func (T *Pooler) Release(server uuid.UUID) { T.s.Release(server) } diff --git a/pgbouncer.ini b/pgbouncer.ini index d458e49a..428dbd8b 100644 --- a/pgbouncer.ini +++ b/pgbouncer.ini @@ -4,6 +4,7 @@ auth_file = userlist.txt listen_addr = * track_extra_parameters = IntervalStyle, session_authorization, default_transaction_read_only, search_path auth_user = postgres +server_idle_timeout = 10 [databases] * = host=/tmp/ datestyle=Postgres,MDY timezone=PST8PDT -- GitLab