]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/mgr/rbd_support: include retryable error message in task
authorJason Dillaman <dillaman@redhat.com>
Thu, 19 Nov 2020 21:08:22 +0000 (16:08 -0500)
committerNathan Cutler <ncutler@suse.com>
Mon, 30 Nov 2020 12:14:01 +0000 (13:14 +0100)
If a retryable error occurs, include the reason message in the
task JSON structure that is exposed via the "rbd task list"
MGR command.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 66ddfee8590769935f260becee5e8fc070bce66d)

src/pybind/mgr/rbd_support/task.py

index 12a4a3c06dee31ae6eebcddd065d8b7cb473d201..78c7db07190704e16fd002e6d0cf0a1eb57da254 100644 (file)
@@ -23,6 +23,7 @@ TASK_REFS = "refs"
 TASK_MESSAGE = "message"
 TASK_RETRY_ATTEMPTS = "retry_attempts"
 TASK_RETRY_TIME = "retry_time"
+TASK_RETRY_MESSAGE = "retry_message"
 TASK_IN_PROGRESS = "in_progress"
 TASK_PROGRESS = "progress"
 TASK_CANCELED = "canceled"
@@ -73,6 +74,7 @@ class Task:
         self.task_id = task_id
         self.message = message
         self.refs = refs
+        self.retry_message = None
         self.retry_attempts = 0
         self.retry_time = None
         self.in_progress = False
@@ -101,6 +103,8 @@ class Task:
              TASK_MESSAGE: self.message,
              TASK_REFS: self.refs
              }
+        if self.retry_message:
+            d[TASK_RETRY_MESSAGE] = self.retry_message
         if self.retry_attempts:
             d[TASK_RETRY_ATTEMPTS] = self.retry_attempts
         if self.retry_time:
@@ -391,6 +395,7 @@ class TaskHandler:
         except rados.ObjectNotFound as e:
             self.log.error("execute_task: {}".format(e))
             if pool_valid:
+                task.retry_message = "{}".format(e)
                 self.update_progress(task, 0)
             else:
                 # pool DNE -- remove the task
@@ -399,6 +404,7 @@ class TaskHandler:
 
         except (rados.Error, rbd.Error) as e:
             self.log.error("execute_task: {}".format(e))
+            task.retry_message = "{}".format(e)
             self.update_progress(task, 0)
 
         finally: