]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: mgr prepare_create must replace ports, not append
authorKobi Ginon <kginon@redhat.com>
Thu, 14 May 2026 17:56:59 +0000 (20:56 +0300)
committerKobi Ginon <kginon@redhat.com>
Thu, 14 May 2026 18:07:52 +0000 (21:07 +0300)
- Root cause: empty "mgr services" skipped "if ports"; stale list +
  unconditional append duplicated 8765 across redeploys.
- Fix: assign ports + [service_discovery_port] (tracker #76564).
- Repro tip: disable dashboard/prometheus, redeploy mgr repeatedly,
  inspect mgr/cephadm/host.<host> JSON before/after.

Fixes: https://tracker.ceph.com/issues/76564
Signed-off-by: Kobi Ginon <kginon@redhat.com>
src/pybind/mgr/cephadm/services/cephadmservice.py

index d39c8d73fddb6ead9b67e5836c4a972c4bcaf640..fc9b1bf2ec8aca73b9085eda96cff0553a84dfd6 100644 (file)
@@ -1196,10 +1196,11 @@ class MgrService(CephService):
                 if port:
                     ports.append(int(port[0][1:-1]))
 
-        if ports:
-            daemon_spec.ports = ports
-
-        daemon_spec.ports.append(self.mgr.service_discovery_port)
+        # Always replace ports (do not append onto a list rehydrated from the
+        # persisted host cache). When ``mgr services`` is empty, ``ports`` is
+        # empty and we must not retain old entries + append service discovery
+        # again
+        daemon_spec.ports = ports + [self.mgr.service_discovery_port]
         daemon_spec.keyring = keyring
 
         daemon_spec.final_config, daemon_spec.deps = self.generate_config(daemon_spec)