From ca52f3bd93e6c743aa05171108527d877807b426 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Fri, 27 Oct 2017 13:20:07 -0700 Subject: [PATCH] MDSMonitor: wait for readable OSDMap before sanitizing Fixes: http://tracker.ceph.com/issues/21945 Signed-off-by: Patrick Donnelly --- src/mon/MDSMonitor.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index c79790b6f0c..386e56c1870 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -117,8 +117,6 @@ void MDSMonitor::update_from_paxos(bool *need_bootstrap) assert(fsmap_bl.length() > 0); dout(10) << __func__ << " got " << version << dendl; fsmap.decode(fsmap_bl); - auto &osdmap = mon->osdmon()->osdmap; - fsmap.sanitize([&osdmap](int64_t pool){return osdmap.have_pg_pool(pool);}); // new map dout(4) << "new map" << dendl; @@ -140,6 +138,11 @@ void MDSMonitor::create_pending() pending_fsmap = fsmap; pending_fsmap.epoch++; + if (mon->osdmon()->is_readable()) { + auto &osdmap = mon->osdmon()->osdmap; + pending_fsmap.sanitize([&osdmap](int64_t pool){return osdmap.have_pg_pool(pool);}); + } + dout(10) << "create_pending e" << pending_fsmap.epoch << dendl; } -- 2.39.5