]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/MonClient: fix sending mon command to a specific rank
authorSage Weil <sage@redhat.com>
Wed, 2 Oct 2019 22:33:03 +0000 (17:33 -0500)
committerSage Weil <sage@redhat.com>
Fri, 4 Oct 2019 14:07:03 +0000 (09:07 -0500)
The target_name check was triggering when target_name was empty (and
target_rank >= 0).

Fixes 4ef0502da5e

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/MonClient.cc

index a1a0c7b9b4468587e1d62da60828af403d6f3c10..67b47d6cd7313d391da6e9b66db5bad9618553ed 100644 (file)
@@ -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 */);
       }