fix race condition error

When the worker exited the tempfile is not available anymore so we can't
get the last update and calculate the dynamic timeout introduced in
d76bab4d716fed3f965fbde4ba1a1bba975f03d1 .

This changes fix it by catching the IO error.

fix #863
This commit is contained in:
benoitc 2014-08-30 09:26:54 +02:00
parent 49d50c81e9
commit 4fe426cd66

View File

@ -305,7 +305,15 @@ class Arbiter(object):
"""
if self.WORKERS:
worker_values = list(self.WORKERS.values())
oldest = min(w.tmp.last_update() for w in worker_values)
oldest = time.time()
for w in worker_values:
try:
if w.tmp.last_update() < oldest:
oldest = w.tmp.last_update()
except ValueError:
pass
timeout = self.timeout - (time.time() - oldest)
# The timeout can be reached, so don't wait for a negative value
timeout = max(timeout, 1.0)