From 20b0db7ddbc81e82e74b44a38e42924b1b0aa5e6 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Tue, 31 Dec 2019 12:54:45 +0100 Subject: [PATCH] Thread safe task remove in failTask --- src/Worker/WorkerManager.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Worker/WorkerManager.py b/src/Worker/WorkerManager.py index cf4b4bd8..6cfd0d3d 100644 --- a/src/Worker/WorkerManager.py +++ b/src/Worker/WorkerManager.py @@ -587,11 +587,14 @@ class WorkerManager(object): # Mark a task failed def failTask(self, task, reason="Unknown"): - if task in self.tasks: - self.log.debug("Task %s failed (Reason: %s)" % (task["inner_path"], reason)) - task["done"] = True + try: self.tasks.remove(task) # Remove from queue - self.site.onFileFail(task["inner_path"]) - task["evt"].set(False) - if not self.tasks: - self.site.greenlet_manager.spawn(self.checkComplete) + except ValueError as err: + return False + + self.log.debug("Task %s failed (Reason: %s)" % (task["inner_path"], reason)) + task["done"] = True + self.site.onFileFail(task["inner_path"]) + task["evt"].set(False) + if not self.tasks: + self.site.greenlet_manager.spawn(self.checkComplete)