From 9d0a17c7fabd2f37d4c90c3377d5f2e334a4230d Mon Sep 17 00:00:00 2001 From: Adam Holmberg Date: Fri, 7 Aug 2015 16:37:39 -0500 Subject: [PATCH] exec concurrent gen: reacquire lock no matter what resolves a (non-impactful) RuntimeError emitted if a generator is collected without having been consumed --- cassandra/concurrent.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cassandra/concurrent.py b/cassandra/concurrent.py index 7c0d3fd7..e4b00833 100644 --- a/cassandra/concurrent.py +++ b/cassandra/concurrent.py @@ -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