19709: Apply pending rails migrations at service start/restart.
[arvados.git] / lib / ctrlctx / db.go
index 2a05096ce18b7430e7e1e487dd5d710024ac9193..b711b3e650cb2f1c19825c71683cc3817b9abd59 100644 (file)
@@ -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
+}