From: Yingxin Cheng Date: Tue, 25 Feb 2020 05:19:20 +0000 (+0800) Subject: crimson: fix min_peers related logic in heartbeat X-Git-Tag: v15.1.1~251^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=40c3444d639970e99559cc174ac581f3d7202205;p=ceph.git crimson: fix min_peers related logic in heartbeat Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/osd/heartbeat.cc b/src/crimson/osd/heartbeat.cc index 3341c0fe039..0fb5eff7dcc 100644 --- a/src/crimson/osd/heartbeat.cc +++ b/src/crimson/osd/heartbeat.cc @@ -174,23 +174,19 @@ seastar::future<> Heartbeat::update_peers(int whoami) [=](iteration_state& s) { return seastar::do_until( [min_peers, &s, this] { - return peers.size() < min_peers || s.where == s.end; }, + return peers.size() <= min_peers || s.where == s.end; }, [&s, this] { return remove_peer(*s.where); } ); }); }).then([=] { // or too few? - vector want; auto osdmap = service.get_osdmap_service().get_map(); + auto epoch = osdmap->get_epoch(); for (auto next = osdmap->get_next_up_osd_after(whoami); peers.size() < min_peers && next >= 0 && next != whoami; next = osdmap->get_next_up_osd_after(next)) { - want.push_back(next); - } - auto epoch = osdmap->get_epoch(); - for (int osd : want) { - add_peer(osd, epoch); + add_peer(next, epoch); } }); }