X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/65b12213f740b117fb14822bce0dbb415257c355..35d4eea994c98b4bb65111c9da6e57abbc7e014f:/lib/ctrlctx/db.go diff --git a/lib/ctrlctx/db.go b/lib/ctrlctx/db.go index 2a05096ce1..d33fd8ab53 100644 --- a/lib/ctrlctx/db.go +++ b/lib/ctrlctx/db.go @@ -69,7 +69,7 @@ type finishFunc func(*error) // commit or rollback the transaction, if any. // // func example(ctx context.Context) (err error) { -// ctx, finishtx := New(ctx, dber) +// ctx, finishtx := New(ctx, getdb) // defer finishtx(&err) // // ... // tx, err := CurrentTx(ctx) @@ -168,8 +168,20 @@ func (dbc *DBConnector) GetDB(ctx context.Context) (*sqlx.DB, error) { } if err := db.Ping(); err != nil { ctxlog.FromContext(ctx).WithError(err).Error("postgresql connect succeeded but ping failed") + db.Close() return nil, errDBConnection } dbc.pgdb = db return db, nil } + +func (dbc *DBConnector) Close() error { + dbc.mtx.Lock() + defer dbc.mtx.Unlock() + var err error + if dbc.pgdb != nil { + err = dbc.pgdb.Close() + dbc.pgdb = nil + } + return err +}