]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Another Variant for detecting if a connection is closed
authorDirk Mueller <dmueller@suse.com>
Thu, 8 May 2014 15:07:44 +0000 (17:07 +0200)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 30 May 2014 16:00:37 +0000 (12:00 -0400)
If there is a closed attribute on the connection and
it is true, return true. Implements a todo in the code
and helps in one specific disconnect case where it previously
did not match because the error message was "unknown error".

lib/sqlalchemy/dialects/postgresql/psycopg2.py

index 233731b5dc4082768be393c0175058cb62610836..b79dfdb2a53688644a63324f64632bc00cbf469c 100644 (file)
@@ -489,12 +489,16 @@ class PGDialect_psycopg2(PGDialect):
 
     def is_disconnect(self, e, connection, cursor):
         if isinstance(e, self.dbapi.Error):
+            # Is the connection already marked as closed?
+            if getattr(connection, 'closed', False):
+                return True
+
             str_e = str(e).partition("\n")[0]
             for msg in [
                 # these error messages from libpq: interfaces/libpq/fe-misc.c
                 # and interfaces/libpq/fe-secure.c.
                 # TODO: these are sent through gettext in libpq and we can't
-                # check within other locales - consider using connection.closed
+                # check within other locales
                 'terminating connection',
                 'closed the connection',
                 'connection not open',