From b639fa3144eaf501a7156d4941eadb5237c331ff Mon Sep 17 00:00:00 2001 From: Pan Liu Date: Fri, 18 Nov 2016 20:01:42 +0800 Subject: [PATCH] OSD: heartbeat peers need to be updated when a new OSD added into an already existed cluster Fixes: http://tracker.ceph.com/issues/18004 Signed-off-by: Pan Liu (cherry picked from commit e95026f6be44f5aae93f005d249ffcf66bef15fd) --- src/osd/OSD.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index ce9584a02ed19..a67931adc47b5 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6617,6 +6617,7 @@ void OSD::note_down_osd(int peer) void OSD::note_up_osd(int peer) { service.forget_peer_epoch(peer, osdmap->get_epoch() - 1); + heartbeat_set_peers_need_update(); } struct C_OnMapCommit : public Context { @@ -6936,6 +6937,10 @@ void OSD::_committed_osd_maps(epoch_t first, epoch_t last, MOSDMap *m) waited_for_reservations = true; } note_down_osd(*p); + } else if (*p != whoami && + !osdmap->have_inst(*p) && + newmap->is_up(*p)) { + note_up_osd(*p); } } -- 2.39.5