From: Nitzan Mordechai Date: Mon, 24 Jan 2022 10:55:23 +0000 (+0200) Subject: pybind/mgr: ceph osd status crash with ZeroDivisionError X-Git-Tag: v16.2.15~54^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0c76bc4217bfd365d786a18acfe87ea8e0f85500;p=ceph.git pybind/mgr: ceph osd status crash with ZeroDivisionError If stats-update is called a second time within a second, get_rate() fails with a 'divide by 0' error. Change the check before the computation, taking into account the fact that two f.p numbers may differ, but still their diff - when cast into an int - might be zero. Fixed: https://tracker.ceph.com/issues/53538 Signed-off-by: Nitzan Mordechai (cherry picked from commit 140b7ce529f23ae429e71dfc1ad0deef13174e88) --- diff --git a/src/pybind/mgr/status/module.py b/src/pybind/mgr/status/module.py index 676bc03d9a01..d83de859b095 100644 --- a/src/pybind/mgr/status/module.py +++ b/src/pybind/mgr/status/module.py @@ -43,7 +43,7 @@ class Module(MgrModule): data = self.get_counter(daemon_type, daemon_name, stat)[stat] #self.log.error("get_latest {0} data={1}".format(stat, data)) - if data and len(data) > 1 and data[-1][0] != data[-2][0]: + if data and len(data) > 1 and (int(data[-1][0] - data[-2][0]) != 0): return (data[-1][1] - data[-2][1]) // int(data[-1][0] - data[-2][0]) else: return 0