]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/progress: ensure progress stays between [0,1] 41310/head
authorDan van der Ster <daniel.vanderster@cern.ch>
Thu, 29 Apr 2021 23:06:17 +0000 (01:06 +0200)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Wed, 12 May 2021 16:11:18 +0000 (23:11 +0700)
If _original_pg_count is 0 then progress can be negative.

Fixes: https://tracker.ceph.com/issues/50591
Related-to: https://tracker.ceph.com/issues/50587
Signed-off-by: Dan van der Ster <daniel.vanderster@cern.ch>
(cherry picked from commit 20990a94598d0249745e2ec25c9197d842119d92)

src/pybind/mgr/progress/module.py

index f880bb6ef2d2f07594a7b99e8a58d0840e73097e..5225021c5ebcb072ba4d80cec54b96237fc47fad 100644 (file)
@@ -265,10 +265,16 @@ class PgRecoveryEvent(Event):
 
         self._pgs = list(set(self._pgs) ^ complete)
         completed_pgs = self._original_pg_count - len(self._pgs)
-        self._progress = (completed_pgs + complete_accumulate)\
-            / self._original_pg_count
-        self._refresh()
+        completed_pgs = max(completed_pgs, 0)
+        try:
+            prog = (completed_pgs + complete_accumulate)\
+                / self._original_pg_count
+        except ZeroDivisionError:
+            prog = 0.0
 
+        self._progress = min(max(prog, 0.0), 1.0)
+
+        self._refresh()
         log.info("Updated progress to {0} ({1})".format(
             self._progress, self._message
         ))