]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: tasks: only unblock controller thread after TaskManager thread 30747/head
authorRicardo Dias <rdias@suse.com>
Mon, 7 Oct 2019 09:39:10 +0000 (10:39 +0100)
committerRicardo Dias <rdias@suse.com>
Mon, 7 Oct 2019 09:39:50 +0000 (10:39 +0100)
Fixes: https://tracker.ceph.com/issues/42187
Signed-off-by: Ricardo Dias <rdias@suse.com>
src/pybind/mgr/dashboard/tools.py

index 804564512c24b07eb2ac083fff60b14b07dad33e..785f025f370a40ed61817740bbeef54b962e4ae6 100644 (file)
@@ -585,6 +585,7 @@ class Task(object):
         return str(self)
 
     def _run(self):
+        NotificationQueue.register(self._handle_task_finished, 'cd_task_finished', 100)
         with self.lock:
             assert not self.running
             self.executor.init(self)
@@ -610,10 +611,14 @@ class Task(object):
             if not self.exception:
                 self.set_progress(100, True)
         NotificationQueue.new_notification('cd_task_finished', self)
-        self.event.set()
         logger.debug("TK: execution of %s finished in: %s s", self,
                      self.duration)
 
+    def _handle_task_finished(self, task):
+        if self == task:
+            NotificationQueue.deregister(self._handle_task_finished)
+            self.event.set()
+
     def wait(self, timeout=None):
         with self.lock:
             assert self.running, "wait cannot be called before _run"