From 1d748d9bbf1912dbd7f61d31e6fa8dde9e55573f Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Sat, 13 Aug 2022 09:49:06 -0500 Subject: [PATCH] Failsafe timeout for background pool connections Do not override existing connect timeout. --- pgxpool/pool.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pgxpool/pool.go b/pgxpool/pool.go index d2155043e..559f9c5d1 100644 --- a/pgxpool/pool.go +++ b/pgxpool/pool.go @@ -214,14 +214,14 @@ func ConnectConfig(ctx context.Context, config *Config) (*Pool, error) { // see https://github.com/jackc/pgx/issues/1259 ctx = detachedCtx{ctx} - // But we do want to ensure that a connect won't hang forever. - ctx, cancel := context.WithTimeout(ctx, 2*time.Minute) - defer cancel() + connConfig := p.config.ConnConfig.Copy() - connConfig := p.config.ConnConfig + // But we do want to ensure that a connect won't hang forever. + if connConfig.ConnectTimeout <= 0 { + connConfig.ConnectTimeout = 2 * time.Minute + } if p.beforeConnect != nil { - connConfig = p.config.ConnConfig.Copy() if err := p.beforeConnect(ctx, connConfig); err != nil { return nil, err }