From d2cbf9153f02b67d18e168adaeb65940859cc75a Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Thu, 6 Jan 2022 12:35:38 +0100 Subject: [PATCH] mgr/cephadm: nfs migration: avoid port conflicts The nfs upgrade renames the nfs spec from `nfs.ganesha-{service_id}` to `nfs.{service_id}`. Previously we used the orphan-daemon check to remove the old `nfs.ganesha-{service_id}` daemons. This does not work as sometimes serve() tries to deploy the new daemons before cleaning up the old daemons. This results in a port conflict breaking the upgrade. Fixes: https://tracker.ceph.com/issues/53424 Signed-off-by: Sebastian Wagner --- src/pybind/mgr/cephadm/migrations.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pybind/mgr/cephadm/migrations.py b/src/pybind/mgr/cephadm/migrations.py index 95ec5d28770ec..672a895bc14c8 100644 --- a/src/pybind/mgr/cephadm/migrations.py +++ b/src/pybind/mgr/cephadm/migrations.py @@ -237,6 +237,12 @@ class Migrations: self.mgr.spec_store.rm(f'nfs.ganesha-{service_id}') spec.service_id = service_id self.mgr.spec_store.save(spec, True) + + # We have to remove the old daemons here as well, otherwise we'll end up with a port conflict. + daemons = [d.name() + for d in self.mgr.cache.get_daemons_by_service(f'nfs.ganesha-{service_id}')] + self.mgr.log.info(f'Removing old nfs.ganesha-{service_id} daemons {daemons}') + self.mgr.remove_daemons(daemons) else: # redeploy all ganesha daemons to ensures that the daemon # cephx are correct AND container configs are set up properly -- 2.39.5