From 9b546b69069700ae76d96b842b436288dafd6742 Mon Sep 17 00:00:00 2001 From: Mingxin Liu Date: Fri, 17 Feb 2017 18:25:05 +0800 Subject: [PATCH] mon/MonClient: random all ranks then pick first_n Signed-off-by: Mingxin Liu --- src/mon/MonClient.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 93f2223b5a41e..f6233a9b7b19b 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -625,17 +625,19 @@ MonConnection& MonClient::_add_conn(unsigned rank) void MonClient::_add_conns() { - unsigned n = cct->_conf->mon_client_hunt_parallel; - if (n == 0 || n > monmap.size()) { - n = monmap.size(); - } - vector ranks(n); - for (unsigned i = 0; i < n; i++) { + const unsigned num_mons = monmap.size(); + vector ranks(num_mons); + for (unsigned i = 0; i < num_mons; i++) { ranks[i] = i; } std::random_device rd; std::mt19937 rng(rd()); std::shuffle(ranks.begin(), ranks.end(), rng); + + unsigned n = cct->_conf->mon_client_hunt_parallel; + if (n == 0 || n > monmap.size()) { + n = num_mons; + } for (unsigned i = 0; i < n; i++) { _add_conn(ranks[i]); } -- 2.39.5