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: v15.2.13~8^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=72c6605df01f47fa3eb4fbd9e8d264b16226476b;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 165732d2f947..9ef00a96dd08 100644 --- a/src/pybind/mgr/progress/module.py +++ b/src/pybind/mgr/progress/module.py @@ -325,8 +325,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())