From 4ea9e4818f05c4883f4cbb9a27f3fef0b3fd3dae Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 6 Apr 2014 16:03:50 -0700 Subject: [PATCH] osd: fix map subscription in YOU_DIED osd_ping handler If we have epoch X and find out we died as of epoch Y, we still want to request X+1. Among other things, this fixes a 'stall' if Y happens to be the most recent map published and no new maps are generated because we will never get anything back from our subscription. This makes this osdmap_subscribe() caller match every other caller by passing in current epoch + 1. Fixes: #8002 Signed-off-by: Sage Weil --- src/osd/OSD.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 52c4f4575022e..baa98481651ac 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3012,9 +3012,9 @@ void OSD::handle_osd_ping(MOSDPing *m) break; case MOSDPing::YOU_DIED: - dout(10) << "handle_osd_ping " << m->get_source_inst() << " says i am down in " << m->map_epoch - << dendl; - osdmap_subscribe(m->map_epoch, false); + dout(10) << "handle_osd_ping " << m->get_source_inst() + << " says i am down in " << m->map_epoch << dendl; + osdmap_subscribe(curmap->get_epoch()+1, false); break; } -- 2.39.5