From 1c5a7395776d77a5ea7677c31c7040dcd66ff5ed Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 5 May 2026 09:36:01 +0800 Subject: [PATCH] pybind/mgr/status: drop asserts that fight the defaultdict defaults The 'assert metadata' checks in the status module were actually fighting against our own defaults. Since an empty defaultdict is falsy, these asserts would blow up the whole command if a single daemon was down after a mgr restart. This drops those four grumpy asserts. Now, instead of a traceback, `ceph osd status` and `ceph fs status` will just show a blank hostname or "unknown" version as intended. The trigger is common in practice: any mgr restart leaves daemons that are currently down without metadata in daemon_state, since they never reconnect via MMgrOpen to repopulate it. After such a restart, `ceph osd status` and `ceph fs status` blow up: ``` Error EINVAL: Traceback (most recent call last): ... File ".../status/module.py", line 340, in handle_osd_status assert metadata AssertionError ``` The bug was introduced in 5ac2901f54ff Fixes: https://tracker.ceph.com/issues/76416 Reported-by: Maximiliano Sandoval Signed-off-by: Kefu Chai --- src/pybind/mgr/status/module.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/pybind/mgr/status/module.py b/src/pybind/mgr/status/module.py index bae1136a3d1b..de14a9f02dbc 100644 --- a/src/pybind/mgr/status/module.py +++ b/src/pybind/mgr/status/module.py @@ -109,7 +109,6 @@ class Module(MgrModule): metadata = self.get_metadata('mds', info['name'], default=defaultdict(lambda: 'unknown')) - assert metadata mds_versions[metadata['ceph_version']].append(info['name']) if output_format in ('json', 'json-pretty'): @@ -159,7 +158,6 @@ class Module(MgrModule): metadata = self.get_metadata('mds', daemon_info['name'], default=defaultdict(lambda: 'unknown')) - assert metadata mds_versions[metadata['ceph_version']].append(daemon_info['name']) if output_format in ('json', 'json-pretty'): @@ -234,7 +232,6 @@ class Module(MgrModule): for standby in fsmap['standbys']: metadata = self.get_metadata('mds', standby['name'], default=defaultdict(lambda: 'unknown')) - assert metadata mds_versions[metadata['ceph_version']].append(standby['name']) if output_format in ('json', 'json-pretty'): @@ -337,7 +334,6 @@ class Module(MgrModule): if osd_id in osd_stats: metadata = self.get_metadata('osd', str(osd_id), default=defaultdict(str)) stats = osd_stats[osd_id] - assert metadata hostname = metadata['hostname'] kb_used = stats['kb_used'] * 1024 kb_avail = stats['kb_avail'] * 1024 -- 2.47.3