From: Mingxin Liu Date: Fri, 17 Feb 2017 10:25:05 +0000 (+0800) Subject: mon/MonClient: random all ranks then pick first_n X-Git-Tag: v12.0.1~345^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F13479%2Fhead;p=ceph.git mon/MonClient: random all ranks then pick first_n Signed-off-by: Mingxin Liu --- diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 93f2223b5a41..f6233a9b7b19 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]); }