From 8399833f3d221364a8ededb97cd4e1c5a258d924 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 19 Sep 2017 18:25:56 -0400 Subject: [PATCH] osd/OSDMap: ignore xinfo if features == 0 Some old bug (e.g., http://tracker.ceph.com/issues/20751) could result in an UP+EXISTS osd having features==0. If that happens, we shouldn't crash the mon, which (reasonably) does if (osdmap.get_epoch()) { if (osdmap.get_num_up_osds() > 0) { assert(osdmap.get_up_osd_features() & CEPH_FEATURE_MON_STATEFUL_SUB); check_subs(); } } Signed-off-by: Sage Weil --- src/osd/OSDMap.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 7986b35e130ac..e20bd469f19c7 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1414,6 +1414,8 @@ void OSDMap::_calc_up_osd_features() if (!is_up(osd)) continue; const osd_xinfo_t &xi = get_xinfo(osd); + if (xi.features == 0) + continue; // bogus xinfo, maybe #20751 or similar, skipping if (first) { cached_up_osd_features = xi.features; first = false; -- 2.39.5