Commit 92c084c4 authored by Jeremy Hylton's avatar Jeremy Hylton

Make sure there is a timeout in the synchronous case, too.

Synchronous is what matters for the tests.
parent 1050971d
...@@ -319,6 +319,9 @@ class ClientStorage(object): ...@@ -319,6 +319,9 @@ class ClientStorage(object):
def _wait(self, timeout=None): def _wait(self, timeout=None):
if timeout is not None: if timeout is not None:
deadline = time.time() + timeout deadline = time.time() + timeout
log2(BLATHER, "Setting deadline to %f" % deadline)
else:
deadline = None
# Wait for a connection to be established. # Wait for a connection to be established.
self._rpc_mgr.connect(sync=1) self._rpc_mgr.connect(sync=1)
# When a synchronous connect() call returns, there is # When a synchronous connect() call returns, there is
...@@ -336,19 +339,22 @@ class ClientStorage(object): ...@@ -336,19 +339,22 @@ class ClientStorage(object):
break break
log2(INFO, "Waiting for cache verification to finish") log2(INFO, "Waiting for cache verification to finish")
else: 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 # If there is no mainloop running, this code needs
# to call poll() to cause asyncore to handle events. # to call poll() to cause asyncore to handle events.
while 1: while 1:
if self._ready.isSet(): if self._ready.isSet():
break break
if deadline and time.time() > deadline:
log2(PROBLEM, "Timed out waiting for connection")
break
log2(INFO, "Waiting for cache verification to finish") log2(INFO, "Waiting for cache verification to finish")
if self._connection is None: if self._connection is None:
# If the connection was closed while we were # If the connection was closed while we were
# waiting for it to become ready, start over. # waiting for it to become ready, start over.
return self._wait() return self._wait(deadline - time.time())
else: else:
self._connection.pending(30) self._connection.pending(30)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment