From: Mike Bayer Date: Sun, 14 Oct 2018 19:55:46 +0000 (-0400) Subject: Don't call rollback on DBAPI connection that's "closed" X-Git-Tag: rel_1_3_0b1~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a8781b51b4039eee56791b9dbfdee183f7a5b797;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git 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 --- diff --git a/lib/sqlalchemy/testing/engines.py b/lib/sqlalchemy/testing/engines.py index 7404befb83..d17e30edff 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):