session may be a scoped_session and may not have a transaction

This commit is contained in:
John Davis
2024-03-05 17:18:01 -05:00
parent fb89a2651b
commit 149e281a4c
+4 -1
View File
@@ -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.")