Rollback existing nested transacvtion before restarting

SQLAlchemy 1.4 will be adding stricter rules to Connection objects
such that a new transaction cannot be started while an old one hasn't
been cleared.   Ensure this particular test fixture clears
the "savepoint" transaction first before starting a new one.

References: https://github.com/sqlalchemy/sqlalchemy/issues/4712
Change-Id: Idcb616fd3add4d58f22b91865cec8a54fe492093
This commit is contained in:
Mike Bayer 2019-06-07 11:52:40 -04:00
parent 2f8250f3f7
commit 459de14357

View File

@ -1227,12 +1227,16 @@ class NonCommittingConnectable(object):
""" """
_nested_trans = None
def __init__(self, connection): def __init__(self, connection):
self.connection = connection self.connection = connection
self._trans = connection.begin() self._trans = connection.begin()
self._restart_nested() self._restart_nested()
def _restart_nested(self): def _restart_nested(self):
if self._nested_trans is not None:
self._nested_trans.rollback()
self._nested_trans = self.connection.begin_nested() self._nested_trans = self.connection.begin_nested()
def _dispose(self): def _dispose(self):