exec concurrent gen: reacquire lock no matter what

resolves a (non-impactful) RuntimeError emitted if a generator is
collected without having been consumed
This commit is contained in:
Adam Holmberg
2015-08-07 16:37:39 -05:00
parent 88c380a7b3
commit 9d0a17c7fa

View File

@@ -166,11 +166,13 @@ class ConcurrentExecutorGenResults(_ConcurrentExecutor):
self._condition.wait()
while self._results_queue and self._results_queue[0][0] == self._current:
_, res = heappop(self._results_queue)
self._condition.release()
if self._fail_fast and not res[0]:
self._raise(res[1])
yield res
self._condition.acquire()
try:
self._condition.release()
if self._fail_fast and not res[0]:
self._raise(res[1])
yield res
finally:
self._condition.acquire()
self._current += 1