From: Sebastian Wagner Date: Thu, 6 Jan 2022 11:35:38 +0000 (+0100) Subject: mgr/cephadm: nfs migration: avoid port conflicts X-Git-Tag: v17.1.0~97^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d2cbf9153f02b67d18e168adaeb65940859cc75a;p=ceph.git 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 --- diff --git a/src/pybind/mgr/cephadm/migrations.py b/src/pybind/mgr/cephadm/migrations.py index 95ec5d28770e..672a895bc14c 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