]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/progress: ensure progress stays between [0,1] 41312/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:14:08 +0000 (23:14 +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 d9935c4581808cd4b3fbe5db1e436c9bec5f8833..e7ebc6e7be2d4cd853edffc0080b7c3604a18605 100644 (file)
@@ -371,8 +371,14 @@ 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
+        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 %s", self.summary())