Unlock while yielding execute concurrent generator results

Fixes an issue where the event thread could be held up on the executor
lock while the client thread waits for a paged result to return.
This commit is contained in:
Adam Holmberg
2015-07-21 14:54:24 -05:00
parent cee1a8c2ad
commit 04bbff3d3b

View File

@@ -166,9 +166,11 @@ 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()
self._current += 1