[Zodb-checkins] CVS: ZODB3/ZEO - ClientStorage.py:1.111

Jeremy Hylton jeremy at zope.com
Fri Oct 3 16:27:33 EDT 2003


Update of /cvs-repository/ZODB3/ZEO
In directory cvs.zope.org:/tmp/cvs-serv6390/ZEO

Modified Files:
	ClientStorage.py 
Log Message:
Make sure there is a timeout in the synchronous case, too.

Synchronous is what matters for the tests.


=== ZODB3/ZEO/ClientStorage.py 1.110 => 1.111 ===
--- ZODB3/ZEO/ClientStorage.py:1.110	Thu Oct  2 14:17:22 2003
+++ ZODB3/ZEO/ClientStorage.py	Fri Oct  3 16:27:32 2003
@@ -319,6 +319,9 @@
     def _wait(self, timeout=None):
         if timeout is not None:
             deadline = time.time() + timeout
+            log2(BLATHER, "Setting deadline to %f" % deadline)
+        else:
+            deadline = None
         # Wait for a connection to be established.
         self._rpc_mgr.connect(sync=1)
         # When a synchronous connect() call returns, there is
@@ -336,19 +339,22 @@
                     break
                 log2(INFO, "Waiting for cache verification to finish")
         else:
-            self._wait_sync()
+            self._wait_sync(deadline)
 
-    def _wait_sync(self):
+    def _wait_sync(self, deadline=None):
         # If there is no mainloop running, this code needs
         # to call poll() to cause asyncore to handle events.
         while 1:
             if self._ready.isSet():
                 break
+            if deadline and time.time() > deadline:
+                log2(PROBLEM, "Timed out waiting for connection")
+                break
             log2(INFO, "Waiting for cache verification to finish")
             if self._connection is None:
                 # If the connection was closed while we were
                 # waiting for it to become ready, start over.
-                return self._wait()
+                return self._wait(deadline - time.time())
             else:
                 self._connection.pending(30)
 




More information about the Zodb-checkins mailing list