]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: tasks: only unblock controller thread after TaskManager thread 31526/head
authorRicardo Dias <rdias@suse.com>
Mon, 7 Oct 2019 09:39:10 +0000 (10:39 +0100)
committerRicardo Marques <rimarques@suse.com>
Mon, 11 Nov 2019 11:20:05 +0000 (11:20 +0000)
Fixes: https://tracker.ceph.com/issues/42187
Signed-off-by: Ricardo Dias <rdias@suse.com>
(cherry picked from commit f6dd9a923cb4e0827616115379a48f521451f8e4)

src/pybind/mgr/dashboard/tools.py

index 7eb23e535b70b4f42b38d51edfeadd2e906b048a..6ab9078f8a5c700c1544de973bf56233ba0d1a17 100644 (file)
@@ -579,6 +579,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)
@@ -604,10 +605,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"