summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/engines.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2018-10-14 15:55:46 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2018-10-14 15:55:46 -0400
commita8781b51b4039eee56791b9dbfdee183f7a5b797 (patch)
tree20f2aaaf1bc439b15bfeb3e6f3cedaed269d25b2 /lib/sqlalchemy/testing/engines.py
parent7405392299492c83e6fa1546d3b36f52042e3c5e (diff)
downloadsqlalchemy-a8781b51b4039eee56791b9dbfdee183f7a5b797.tar.gz
Don't call rollback on DBAPI connection that's "closed"
Use the existence of ConnectionRecord.connection to estimate that this connection is likely closed, and if so, don't try to call "rollback" on it. This rollback is normally harmless but is causing segfaults in mysqlclient due to https://github.com/PyMySQL/mysqlclient-python/issues/270. Change-Id: I1d7c5f5a520527d8268b6334795c2051f7ceeea6
Diffstat (limited to 'lib/sqlalchemy/testing/engines.py')
-rw-r--r--lib/sqlalchemy/testing/engines.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/sqlalchemy/testing/engines.py b/lib/sqlalchemy/testing/engines.py
index 7404befb8..d17e30edf 100644
--- a/lib/sqlalchemy/testing/engines.py
+++ b/lib/sqlalchemy/testing/engines.py
@@ -59,6 +59,12 @@ class ConnectionKiller(object):
# not sure if this should be if pypy/jython only.
# note that firebird/fdb definitely needs this though
for conn, rec in list(self.conns):
+ if rec.connection is None:
+ # this is a hint that the connection is closed, which
+ # is causing segfaults on mysqlclient due to
+ # https://github.com/PyMySQL/mysqlclient-python/issues/270;
+ # try to work around here
+ continue
self._safe(conn.rollback)
def _stop_test_ctx(self):