From: Sebastian Wagner Date: Thu, 6 Jan 2022 11:35:38 +0000 (+0100) Subject: mgr/cephadm: nfs migration: avoid port conflicts X-Git-Tag: v16.2.8~188^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5051e0cb7e26d180c5c2d07d5b7b843769cc7738;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 (cherry picked from commit d2cbf9153f02b67d18e168adaeb65940859cc75a) --- diff --git a/src/pybind/mgr/cephadm/migrations.py b/src/pybind/mgr/cephadm/migrations.py index 941ede3666de..04faba760d07 100644 --- a/src/pybind/mgr/cephadm/migrations.py +++ b/src/pybind/mgr/cephadm/migrations.py @@ -229,6 +229,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