From c842802d65459822e7f2e84ee28db606965e5cb2 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 df017892..e053904c 100644 --- a/pgxpool/pool.go +++ b/pgxpool/pool.go @@ -208,14 +208,14 @@ func NewWithConfig(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 }