]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/insights: fix read-only copy before change
authorNitzan Mordechai <nmordech@redhat.com>
Wed, 27 Aug 2025 10:49:40 +0000 (10:49 +0000)
committerNitzan Mordechai <nmordech@ibm.com>
Wed, 3 Jun 2026 09:13:28 +0000 (09:13 +0000)
since we are modifying read-only python object, we need to copy it first

Fixes: https://tracker.ceph.com/issues/72447
Signed-off-by: Nitzan Mordechai <nmordec@ibm.com>
src/pybind/mgr/insights/health.py
src/pybind/mgr/insights/module.py

index 1deb5d3a611889bbc876b9aca888f0036d41fb16..8647c8b71ebc3e93c58d1eeeaf94796a7a2a0ba1 100644 (file)
@@ -12,7 +12,9 @@ NOW_OFFSET = None
 
 class HealthEncoder(json.JSONEncoder):
     def default(self, obj):
-        if isinstance(obj, set):
+        if obj.__class__.__name__ == 'mappingproxy':
+            return dict(obj)
+        elif isinstance(obj, set):
             return list(obj)
         return json.JSONEncoder.default(self, obj)
 
index 6e8c6aa7d124367cd959c95e0f9024db54e22aa6..1301930e8a74cb6bc3a59d509ce96fb40fa845b4 100644 (file)
@@ -273,8 +273,8 @@ class Module(MgrModule):
         report["config"] = config
         health_check_details.extend(health_details)
 
-        osd_map = self.get("osd_map")
-        del osd_map['pg_temp']
+        osd_map = self.get("osd_map", mutable=True)
+        osd_map.pop("pg_temp", None)
         self._apply_osd_stats(osd_map)
         report["osd_dump"] = osd_map