]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: force fail over when we want to remove active mgr 46291/head
authorAdam King <adking@redhat.com>
Tue, 17 May 2022 00:44:11 +0000 (20:44 -0400)
committerAdam King <adking@redhat.com>
Tue, 17 May 2022 00:48:48 +0000 (20:48 -0400)
Fixes: https://tracker.ceph.com/issues/55679
Signed-off-by: Adam King <adking@redhat.com>
src/pybind/mgr/cephadm/serve.py

index b6b4211e78a77b95dfcda6b3e2485972b01bc608..8568cc12b3029714bc77f7998b06e3fb0c879b20 100644 (file)
@@ -799,6 +799,14 @@ class CephadmServe:
                 self.mgr.set_health_warning('CEPHADM_DAEMON_PLACE_FAIL', f'Failed to place {len(daemon_place_fails)} daemon(s)', len(
                     daemon_place_fails), daemon_place_fails)
 
+            if service_type == 'mgr':
+                active_mgr = svc.get_active_daemon(self.mgr.cache.get_daemons_by_type('mgr'))
+                if active_mgr.daemon_id in [d.daemon_id for d in daemons_to_remove]:
+                    # We can't just remove the active mgr like any other daemon.
+                    # Need to fail over later so it can be removed on next pass.
+                    # This can be accomplished by scheduling a restart of the active mgr.
+                    self.mgr._schedule_daemon_action(active_mgr.name(), 'restart')
+
             # remove any?
             def _ok_to_stop(remove_daemons: List[orchestrator.DaemonDescription]) -> bool:
                 daemon_ids = [d.daemon_id for d in remove_daemons]