From 4c0073d20b72a30e67c97b1527d091d43c67a358 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 24 Aug 2017 17:56:13 -0400 Subject: [PATCH] osd: subscribe to new osdmap while waiting_for_healthy If we are sitting around waiting until we are able to ping our "up" peers, we need to be sure that our notion of "up" is still correct and we're not just stuck on an old, stale OSDMap. Fixes: http://tracker.ceph.com/issues/21121 Signed-off-by: Sage Weil (cherry picked from commit fbafa659dae94faba435ca449ee5e77b51108b4b) --- src/osd/OSD.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 28608f1250a..d8ce26b1294 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5785,6 +5785,9 @@ void OSD::start_waiting_for_healthy() dout(1) << "start_waiting_for_healthy" << dendl; set_state(STATE_WAITING_FOR_HEALTHY); last_heartbeat_resample = utime_t(); + + // subscribe to osdmap updates, in case our peers really are known to be dead + osdmap_subscribe(osdmap->get_epoch() + 1, false); } bool OSD::_is_healthy() -- 2.47.3