From dbb53e68c4b066dfd2dbad411583701ee2ab2985 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 2 Oct 2019 17:33:03 -0500 Subject: [PATCH] mon/MonClient: fix sending mon command to a specific rank The target_name check was triggering when target_name was empty (and target_rank >= 0). Fixes 4ef0502da5e Signed-off-by: Sage Weil --- src/mon/MonClient.cc | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index a1a0c7b9b4468..67b47d6cd7313 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -1087,26 +1087,25 @@ void MonClient::_send_command(MonCommand *r) // tell-style command if (monmap.min_mon_release >= ceph_release_t::octopus) { - if (r->target_rank >= (int)monmap.size()) { - ldout(cct, 10) << " target " << r->target_rank - << " >= max mon " << monmap.size() << dendl; - _finish_command(r, -ENOENT, "mon rank dne"); - return; - } - if (!monmap.contains(r->target_name)) { - ldout(cct, 10) << " target " << r->target_name - << " not present in monmap" << dendl; - _finish_command(r, -ENOENT, "mon dne"); - return; - } - if (r->target_con) { r->target_con->mark_down(); } if (r->target_rank >= 0) { + if (r->target_rank >= (int)monmap.size()) { + ldout(cct, 10) << " target " << r->target_rank + << " >= max mon " << monmap.size() << dendl; + _finish_command(r, -ENOENT, "mon rank dne"); + return; + } r->target_con = messenger->connect_to_mon( monmap.get_addrs(r->target_rank), true /* anon */); } else { + if (!monmap.contains(r->target_name)) { + ldout(cct, 10) << " target " << r->target_name + << " not present in monmap" << dendl; + _finish_command(r, -ENOENT, "mon dne"); + return; + } r->target_con = messenger->connect_to_mon( monmap.get_addrs(r->target_name), true /* anon */); } -- 2.39.5