diff --git a/lib/workerpool.py b/lib/workerpool.py index 16e713f0548f9b1ca93bffaad8be8b42f459c401..e09f473299a93543e44541bc94ce0a67575bdd59 100644 --- a/lib/workerpool.py +++ b/lib/workerpool.py @@ -52,10 +52,17 @@ class BaseWorker(threading.Thread, object): self._current_task = None def ShouldTerminate(self): - """Returns whether a worker should terminate. + """Returns whether this worker should terminate. + + Should only be called from within L{RunTask}. """ - return self.pool.ShouldWorkerTerminate(self) + self.pool._lock.acquire() + try: + assert self._HasRunningTaskUnlocked() + return self.pool._ShouldWorkerTerminateUnlocked(self) + finally: + self.pool._lock.release() def _HasRunningTaskUnlocked(self): """Returns whether this worker is currently running a task. @@ -249,16 +256,6 @@ class WorkerPool(object): """ return (worker in self._termworkers) - def ShouldWorkerTerminate(self, worker): - """Returns whether a worker should terminate. - - """ - self._lock.acquire() - try: - return self._ShouldWorkerTerminateUnlocked(worker) - finally: - self._lock.release() - def _HasRunningTasksUnlocked(self): """Checks whether there's a task running in a worker.