From: Spandan Kumar Sahu Date: Tue, 2 May 2017 23:05:22 +0000 (+0530) Subject: mgr: remove non-existent MDS daemons from FSMap X-Git-Tag: v12.0.3~47^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F14937%2Fhead;p=ceph.git mgr: remove non-existent MDS daemons from FSMap Fixes: http://tracker.ceph.com/issues/17453 Signed-off-by: Spandan Kumar Sahu --- diff --git a/src/mgr/Mgr.cc b/src/mgr/Mgr.cc index eb6c9a1639b..5630a5e30b2 100644 --- a/src/mgr/Mgr.cc +++ b/src/mgr/Mgr.cc @@ -440,7 +440,7 @@ void Mgr::handle_osd_map() cluster_state.notify_osdmap(osd_map); }); - // TODO: same culling for MonMap and FSMap + // TODO: same culling for MonMap daemon_state.cull(CEPH_ENTITY_TYPE_OSD, names_exist); } @@ -506,6 +506,8 @@ void Mgr::handle_fs_map(MFSMap* m) { assert(lock.is_locked_by_me()); + std::set names_exist; + const FSMap &new_fsmap = m->get_fsmap(); fs_map_cond.Signal(); @@ -521,6 +523,13 @@ void Mgr::handle_fs_map(MFSMap* m) for (const auto &i : mds_info) { const auto &info = i.second; + if (!new_fsmap.gid_exists(i.first)){ + continue; + } + + // Remember which MDS exists so that we can cull any that don't + names_exist.insert(info.name); + const auto k = DaemonKey(CEPH_ENTITY_TYPE_MDS, info.name); if (daemon_state.is_updating(k)) { continue; @@ -561,6 +570,7 @@ void Mgr::handle_fs_map(MFSMap* m) {}, &c->outbl, &c->outs, c); } } + daemon_state.cull(CEPH_ENTITY_TYPE_MDS, names_exist); }