- 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>
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)