Skip to content

Commit 4aacca3

Browse files
committed
close db properly
1 parent 118bf98 commit 4aacca3

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

cli/server.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2312,19 +2312,20 @@ func ConnectToPostgres(ctx context.Context, logger slog.Logger, driver string, d
23122312

23132313
var err error
23142314
var sqlDB *sql.DB
2315+
var dbNeedsClosing = true
23152316
// Try to connect for 30 seconds.
23162317
ctx, cancel := context.WithTimeout(ctx, 30*time.Second)
23172318
defer cancel()
23182319

23192320
defer func() {
2320-
if err == nil {
2321+
if !dbNeedsClosing {
23212322
return
23222323
}
23232324
if sqlDB != nil {
23242325
_ = sqlDB.Close()
23252326
sqlDB = nil
2327+
logger.Debug(ctx, "closed db before returning from ConnectToPostgres")
23262328
}
2327-
logger.Error(ctx, "connect to postgres failed", slog.Error(err))
23282329
}()
23292330

23302331
var tries int
@@ -2361,12 +2362,7 @@ func ConnectToPostgres(ctx context.Context, logger slog.Logger, driver string, d
23612362
}
23622363
defer version.Close()
23632364
if !version.Next() {
2364-
// it's critical we assign to the err variable, otherwise the defer statement
2365-
// that runs db.Close() will not execute it
2366-
if err = version.Err(); err != nil {
2367-
return nil, xerrors.Errorf("no rows returned for version select: %w", err)
2368-
}
2369-
return nil, xerrors.Errorf("no rows returned for version select")
2365+
return nil, xerrors.Errorf("no rows returned for version select: %w", version.Err())
23702366
}
23712367
var versionNum int
23722368
err = version.Scan(&versionNum)
@@ -2408,6 +2404,7 @@ func ConnectToPostgres(ctx context.Context, logger slog.Logger, driver string, d
24082404
// of connection churn.
24092405
sqlDB.SetMaxIdleConns(3)
24102406

2407+
dbNeedsClosing = false
24112408
return sqlDB, nil
24122409
}
24132410

0 commit comments

Comments
 (0)