diff --git a/lib/galaxy/model/base.py b/lib/galaxy/model/base.py index e1f22fbc447..d866f6ae38c 100644 --- a/lib/galaxy/model/base.py +++ b/lib/galaxy/model/base.py @@ -67,7 +67,10 @@ def check_database_connection(session): Ref: https://docs.sqlalchemy.org/en/14/errors.html#can-t-reconnect-until-invalid-transaction-is-rolled-back """ assert session - if not session.get_transaction().is_active or session.connection().invalidated: + if isinstance(session, scoped_session): + session = session() + trans = session.get_transaction() + if (trans and not trans.is_active) or session.connection().invalidated: session.rollback() log.error("Database transaction rolled back due to inactive session transaction or invalid connection state.")