From 72c6605df01f47fa3eb4fbd9e8d264b16226476b Mon Sep 17 00:00:00 2001 From: Dan van der Ster Date: Fri, 30 Apr 2021 01:06:17 +0200 Subject: [PATCH] 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) --- src/pybind/mgr/progress/module.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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()) -- 2.47.3