From: Kobi Ginon Date: Thu, 14 May 2026 17:56:59 +0000 (+0300) Subject: cephadm: mgr prepare_create must replace ports, not append X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a036f77654dc50960f20b361769050759fc36c16;p=ceph.git cephadm: mgr prepare_create must replace ports, not append - 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. JSON before/after. Fixes: https://tracker.ceph.com/issues/76564 Signed-off-by: Kobi Ginon --- diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index d39c8d73fddb..fc9b1bf2ec8a 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -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)