From bac1021e06b62b3f1768b33748468055777b69fd Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 20 May 2011 13:25:22 -0700 Subject: [PATCH] osd: only forget peer epochs if they are down AND no longer heartbeat peers If we forget the peer epoch when we see them go down, we won't share the map later in update_heartbeat_peers() to tell them they're down. Signed-off-by: Sage Weil --- src/osd/OSD.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 992afba9bf298..316e4ae152639 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1492,6 +1492,8 @@ void OSD::update_heartbeat_peers() heartbeat_messenger->mark_disposable(con); heartbeat_messenger->mark_down_on_empty(con); con->put(); + if (!osdmap->is_up(p->first)) + forget_peer_epoch(p->first, osdmap->get_epoch()); } } for (map::iterator p = old_from.begin(); @@ -1516,6 +1518,8 @@ void OSD::update_heartbeat_peers() heartbeat_messenger->mark_disposable(con); heartbeat_messenger->mark_down_on_empty(con); con->put(); + if (!osdmap->is_up(p->first)) + forget_peer_epoch(p->first, osdmap->get_epoch()); } } @@ -2439,12 +2443,12 @@ void OSD::_share_map_outgoing(const entity_inst_t& inst) bool OSD::heartbeat_dispatch(Message *m) { - dout(20) << "heartbeat_dispatch " << m << dendl; + dout(30) << "heartbeat_dispatch " << m << dendl; switch (m->get_type()) { case CEPH_MSG_PING: - dout(10) << "ping from " << m->get_source() << dendl; + dout(10) << "ping from " << m->get_source_inst() << dendl; m->put(); break; @@ -2886,8 +2890,6 @@ void OSD::note_down_osd(int peer) // note: update_heartbeat_peers will mark down the heartbeat connection. - forget_peer_epoch(peer, osdmap->get_epoch()); - failure_queue.erase(peer); failure_pending.erase(peer); -- 2.39.5