[Zope3-Users] MySQL connection timeout problem

Brian Sutherland jinty at web.de
Mon Sep 18 20:14:39 EDT 2006


On Mon, Sep 18, 2006 at 10:19:06AM -0700, Michael Bernstein wrote:
> On Mon, 2006-09-18 at 19:04 +0200, Brian Sutherland wrote:
> > On Mon, Sep 18, 2006 at 09:43:01AM -0700, Michael Bernstein wrote:
> > > I am running into a problem that seems superficially similar to the one
> > > described here:
> > > http://mail.zope.org/pipermail/zope3-dev/2005-December/thread.html#17052
> > 
> > Looks the same to me.
> > 
> > > Was a fix for the problem described in the above thread ever checked in?
> > 
> > Doesn't look like it. Been meaning fix it as soon as I hit the problem
> > again, so I can test it.
> 
> Well, the problem requires an eight-hour timeout in order to manifest,
> so the only reason I am hitting it is because my prototype app is idle
> overnight. Does that help you reproduce it?

Can you try this patch (barring typos;):

Index: adapter.py
===================================================================
--- adapter.py	(revision 70218)
+++ adapter.py	(working copy)
@@ -77,3 +77,25 @@
         connection = ZopeDatabaseAdapter.__call__(self)
         directlyProvides(connection, IMySQLZopeConnection)
         return connection
+
+    def isConnected(self):
+        """Check if we are connected to a database.
+        
+        Try to solve the dissapearing connection problem. For background, see
+        http://mail.zope.org/pipermail/zope3-dev/2005-December/017052.html
+        """
+        try:
+            self._v_connection.ping()
+        except MySQLdb.OperationalError:
+            # not connected or ping did not restore MySQL connection
+            if self._v_connection is not None:
+                try:
+                    # this is a bare except because at this point
+                    # we are just trying to be nice closing the connection.
+                    # The situation is bad anyway.
+                    self._v_connection.close()
+                except:
+                    pass
+                self._v_connection = None
+            return False
+        return True


-- 
Brian Sutherland

Metropolis - "it's the first movie with a robot. And she's a woman.
              And she's EVIL!!"


More information about the Zope3-users mailing list