[Zodb-checkins] SVN: ZODB/trunk/src/ZEO/ClientStorage.py The order of operations seemed odd. If we get a new connection, we

Jim Fulton jim at zope.com
Fri Aug 29 08:55:21 EDT 2008


Log message for revision 90587:
  The order of operations seemed odd.  If we get a new connection, we
  should close the old connection, and mark ourselves dissconnected --
  or so it seems. :)  I'm chasing connection-invalidation bugs and this
  rearrangement makes the logic seem a bit simpler to me and sets the
  stage for a later fix for the invalidation problems.
  

Changed:
  U   ZODB/trunk/src/ZEO/ClientStorage.py

-=-
Modified: ZODB/trunk/src/ZEO/ClientStorage.py
===================================================================
--- ZODB/trunk/src/ZEO/ClientStorage.py	2008-08-29 12:55:01 UTC (rev 90586)
+++ ZODB/trunk/src/ZEO/ClientStorage.py	2008-08-29 12:55:19 UTC (rev 90587)
@@ -491,23 +491,25 @@
             # this method before it was stopped.
             return
 
-        # invalidate our db cache
-        if self._db is not None:
-            self._db.invalidateCache()
 
         if self._connection is not None:
+            # If we are upgrading from a read-only fallback connection,
+            # we must close the old connection to prevent it from being
+            # used while the cache is verified against the new connection.
+            self._connection.close()
+            self._connection = None
+            self._ready.clear()
             reconnect = 1
         else:
             reconnect = 0
+
         self.set_server_addr(conn.get_addr())
-
-        # If we are upgrading from a read-only fallback connection,
-        # we must close the old connection to prevent it from being
-        # used while the cache is verified against the new connection.
-        if self._connection is not None:
-            self._connection.close()
         self._connection = conn
 
+        # invalidate our db cache
+        if self._db is not None:
+            self._db.invalidateCache()
+
         if reconnect:
             log2("Reconnected to storage: %s" % self._server_addr)
         else:



More information about the Zodb-checkins mailing list