From 40c3444d639970e99559cc174ac581f3d7202205 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Tue, 25 Feb 2020 13:19:20 +0800 Subject: [PATCH] crimson: fix min_peers related logic in heartbeat Signed-off-by: Yingxin Cheng --- src/crimson/osd/heartbeat.cc | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) 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); } }); } -- 2.39.5