]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg: set_require_authorizer on messenger, not dispatcher
authorSage Weil <sage@redhat.com>
Sun, 28 Apr 2019 13:43:28 +0000 (08:43 -0500)
committerSage Weil <sage@redhat.com>
Sun, 28 Apr 2019 13:43:28 +0000 (08:43 -0500)
This flag is used for compatibility with pre-nautilus OSDs, which do not
send authorizers on the OSD heartbeat connections.  However, because the
AuthServer is implemented by MonClient, which is shared across all
OSD messengers, we can't set this to false for the OSD without disabling
all auth.  Instead, make it a Messenger property, and set it only on the
heartbeat server messengers.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/MonClient.cc
src/msg/Dispatcher.h
src/msg/Messenger.h
src/osd/OSD.cc
src/test/crimson/perf_async_msgr.cc
src/test/crimson/test_async_echo.cc
src/test/msgr/test_msgr.cc

index d01c436a235896b9ee32e0f1edfd37222ad24e02..3cf9b5899f4faf3c05e46acbacd6d143d85094da 100644 (file)
@@ -1433,7 +1433,7 @@ int MonClient::handle_auth_request(
   // for some channels prior to nautilus (osd heartbeat), we tolerate the lack of
   // an authorizer.
   if (payload.length() == 0 &&
-      !handle_authentication_dispatcher->require_authorizer) {
+      !con->get_messenger()->require_authorizer) {
     handle_authentication_dispatcher->ms_handle_authentication(con);
     return 1;
   }
index f7a6fded347719aab377e3d28fad29d1cb647deb..4c707da7d279c13604711849cde1b6761fa6e35d 100644 (file)
@@ -218,16 +218,8 @@ public:
    * @} //Authentication
    */
 
-  void ms_set_require_authorizer(bool b) {
-    require_authorizer = b;
-  }
 protected:
   CephContext *cct;
-public:
-  // allow unauthenticated connections.  This is needed for
-  // compatibility with pre-nautilus OSDs, which do not authenticate
-  // the heartbeat sessions.
-  bool require_authorizer = true;
 private:
   explicit Dispatcher(const Dispatcher &rhs);
   Dispatcher& operator=(const Dispatcher &rhs);
index 1af703adde1e5db7dfed00668bc04e396b09fea1..edd202f3256bf16aa53254ecb0713887d20b396d 100644 (file)
@@ -113,6 +113,12 @@ public:
 
   using Policy = ceph::net::Policy<Throttle>;
 
+public:
+  // allow unauthenticated connections.  This is needed for
+  // compatibility with pre-nautilus OSDs, which do not authenticate
+  // the heartbeat sessions.
+  bool require_authorizer = true;
+
 protected:
   // for authentication
   AuthRegistry auth_registry;
@@ -788,6 +794,10 @@ public:
     }
   }
 
+  void set_require_authorizer(bool b) {
+    require_authorizer = b;
+  }
+
   /**
    * @} // Dispatcher Interfacing
    */
index e900d8abc7c50408ba7b8b09b6ff55a0e4140780..e8b17e2bd817c00a79ecd26effed0df588511d44 100644 (file)
@@ -8431,7 +8431,8 @@ void OSD::check_osdmap_features()
   }
 
   if (osdmap->require_osd_release < CEPH_RELEASE_NAUTILUS) {
-    heartbeat_dispatcher.ms_set_require_authorizer(false);
+    hb_front_server_messenger->set_require_authorizer(false);
+    hb_back_server_messenger->set_require_authorizer(false);
   }
 
   if (osdmap->require_osd_release != last_require_osd_release) {
index d64388ec56cdf1e60a48053a45fb4eef3fe5e950..64a646a066ba3ed365c6b271f6e3c9b5adb7c2fb 100644 (file)
@@ -26,7 +26,7 @@ struct Server {
     msgr->set_default_policy(Messenger::Policy::stateless_server(0));
     msgr->set_auth_client(&dummy_auth);
     msgr->set_auth_server(&dummy_auth);
-    dispatcher.ms_set_require_authorizer(false);
+    msgr->set_require_authorizer(false);
   }
   DummyAuthClientServer dummy_auth;
   unique_ptr<Messenger> msgr;
index 7a7323f1f7363c339822f0ba8ce568a2f4442c13..c9a4e907308eff73fa6aaea3f8b8f17f0aff06a7 100644 (file)
@@ -31,7 +31,7 @@ struct Server {
     msgr->set_default_policy(Messenger::Policy::stateless_server(0));
     msgr->set_auth_client(&dummy_auth);
     msgr->set_auth_server(&dummy_auth);
-    dispatcher.ms_set_require_authorizer(false);
+    msgr->set_require_authorizer(false);
   }
   DummyAuthClientServer dummy_auth;
   unique_ptr<Messenger> msgr;
@@ -92,7 +92,7 @@ struct Client {
     msgr->set_default_policy(Messenger::Policy::lossy_client(0));
     msgr->set_auth_client(&dummy_auth);
     msgr->set_auth_server(&dummy_auth);
-    dispatcher.ms_set_require_authorizer(false);
+    msgr->set_require_authorizer(false);
   }
   DummyAuthClientServer dummy_auth;
   struct ClientDispatcher : Dispatcher {
index 9243db606672f0b157e1876460729cad281196e5..7b55ad4b2d2813d31acf97ebc1ba6b9a84fdbd0b 100644 (file)
@@ -81,6 +81,7 @@ class MessengerTest : public ::testing::TestWithParam<const char*> {
     server_msgr->set_auth_server(&dummy_auth);
     client_msgr->set_auth_client(&dummy_auth);
     client_msgr->set_auth_server(&dummy_auth);
+    server_msgr->set_require_authorizer(false);
   }
   void TearDown() override {
     ASSERT_EQ(server_msgr->get_dispatch_queue_len(), 0);
@@ -115,8 +116,6 @@ class FakeDispatcher : public Dispatcher {
   explicit FakeDispatcher(bool s): Dispatcher(g_ceph_context), lock("FakeDispatcher::lock"),
                           is_server(s), got_new(false), got_remote_reset(false),
                           got_connect(false), loopback(false) {
-    // don't need authorizers
-    ms_set_require_authorizer(false);
   }
   bool ms_can_fast_dispatch_any() const override { return true; }
   bool ms_can_fast_dispatch(const Message *m) const override {
@@ -1509,8 +1508,6 @@ class SyntheticDispatcher : public Dispatcher {
   SyntheticDispatcher(bool s, SyntheticWorkload *wl):
       Dispatcher(g_ceph_context), lock("SyntheticDispatcher::lock"), is_server(s), got_new(false),
       got_remote_reset(false), got_connect(false), index(0), workload(wl) {
-    // don't need authorizers
-    ms_set_require_authorizer(false);
   }
   bool ms_can_fast_dispatch_any() const override { return true; }
   bool ms_can_fast_dispatch(const Message *m) const override {
@@ -2087,8 +2084,6 @@ class MarkdownDispatcher : public Dispatcher {
   std::atomic<uint64_t> count = { 0 };
   explicit MarkdownDispatcher(bool s): Dispatcher(g_ceph_context), lock("MarkdownDispatcher::lock"),
                               last_mark(false) {
-    // don't need authorizers
-    ms_set_require_authorizer(false);
   }
   bool ms_can_fast_dispatch_any() const override { return false; }
   bool ms_can_fast_dispatch(const Message *m) const override {