From: Dan van der Ster Date: Thu, 29 Apr 2021 23:06:17 +0000 (+0200) Subject: mgr/progress: ensure progress stays between [0,1] X-Git-Tag: v16.2.5~95^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c8e5d3484396c610457473aa6c1fe3de3cc076aa;p=ceph.git mgr/progress: ensure progress stays between [0,1] 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 (cherry picked from commit 20990a94598d0249745e2ec25c9197d842119d92) --- diff --git a/src/pybind/mgr/progress/module.py b/src/pybind/mgr/progress/module.py index d9935c458180..e7ebc6e7be2d 100644 --- a/src/pybind/mgr/progress/module.py +++ b/src/pybind/mgr/progress/module.py @@ -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())