From 353e861d3be9a3ab2e8873d60e8348f7a42de915 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 ce9584a02ed19..b778bbc7f6020 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4857,6 +4857,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.39.5