From 6f10373b7a23d83aaab1d68c9881c87d8e9123ad Mon Sep 17 00:00:00 2001 From: Spandan Kumar Sahu Date: Wed, 3 May 2017 04:35:22 +0530 Subject: [PATCH] mgr: remove non-existent MDS daemons from FSMap Fixes: http://tracker.ceph.com/issues/17453 Signed-off-by: Spandan Kumar Sahu --- src/mgr/Mgr.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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); } -- 2.47.3