]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/net: drop Connection::get_messenger()
authorYingxin Cheng <yingxin.cheng@intel.com>
Thu, 13 Oct 2022 08:17:00 +0000 (16:17 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Thu, 13 Oct 2022 08:17:00 +0000 (16:17 +0800)
Simplify Connection interface for multi-core support.

Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/mon/MonClient.cc
src/crimson/net/Connection.h
src/crimson/net/Messenger.h
src/crimson/net/SocketConnection.cc
src/crimson/net/SocketConnection.h
src/crimson/net/SocketMessenger.h
src/test/crimson/test_messenger_thrash.cc

index c79ac46c6da643b273da0e5cd0fe45b998635b72..3d672761aad074c7c34b32eb9159772a804bfa7c 100644 (file)
@@ -242,10 +242,8 @@ Connection::do_auth_single(Connection::request_t what)
       logger().info("do_auth_single: connection closed");
       return std::make_optional(auth_result_t::canceled);
     }
-    logger().info(
-      "do_auth_single: mon {} => {} returns {}: {}",
-      conn->get_messenger()->get_myaddr(),
-      conn->get_peer_addr(), *m, m->result);
+    logger().info("do_auth_single: {} returns {}: {}",
+                  *conn, *m, m->result);
     auto p = m->result_bl.cbegin();
     auto ret = auth->handle_response(m->result, p,
                                     nullptr, nullptr);
@@ -805,10 +803,8 @@ seastar::future<> Client::handle_monmap(crimson::net::ConnectionRef conn,
 seastar::future<> Client::handle_auth_reply(crimson::net::ConnectionRef conn,
                                             Ref<MAuthReply> m)
 {
-  logger().info(
-    "handle_auth_reply mon {} => {} returns {}: {}",
-    conn->get_messenger()->get_myaddr(),
-    conn->get_peer_addr(), *m, m->result);
+  logger().info("handle_auth_reply {} returns {}: {}",
+                *conn, *m, m->result);
   auto found = std::find_if(pending_conns.begin(), pending_conns.end(),
                             [peer_addr = conn->get_peer_addr()](auto& mc) {
                               return mc->is_my_peer(peer_addr);
index b2d2b236f2f60146b54eee9cf622bfd8367f4c1a..0f6bbb7ae8fbe269ef816824abea0cb7586e7ed1 100644 (file)
@@ -104,7 +104,6 @@ class Connection : public seastar::enable_shared_from_this<Connection> {
   Interceptor *interceptor = nullptr;
 #endif
 
-  virtual Messenger* get_messenger() const = 0;
   const entity_addr_t& get_peer_addr() const { return peer_addr; }
   const entity_addrvec_t get_peer_addrs() const {
     return entity_addrvec_t(peer_addr);
index 1e24b9466a5005c8bbb7b9643834f8c9eb91a508..a34db2e42db3e8f2b50bce247c1414424bd53ed1 100644 (file)
@@ -85,6 +85,8 @@ public:
     return connect(peer_addr, entity_name_t(peer_type, -1));
   }
 
+  virtual bool owns_connection(Connection &) const = 0;
+
   // wait for messenger shutdown
   virtual seastar::future<> wait() = 0;
 
index f8664a9f711dbb114c9c289f40ed5778da02ab42..cc6abdacf262595183f749e95a7f0875bda4d192 100644 (file)
@@ -41,11 +41,6 @@ SocketConnection::SocketConnection(SocketMessenger& messenger,
 
 SocketConnection::~SocketConnection() {}
 
-crimson::net::Messenger*
-SocketConnection::get_messenger() const {
-  return &messenger;
-}
-
 bool SocketConnection::is_connected() const
 {
   assert(seastar::this_shard_id() == shard_id());
index bb158d57e462a45be24b62ab973151447d7d8f2b..814e75d935d6cccaf5c1d992765b4bc255a0f0be 100644 (file)
@@ -56,8 +56,6 @@ class SocketConnection : public Connection {
                    ChainedDispatchers& dispatchers);
   ~SocketConnection() override;
 
-  Messenger* get_messenger() const override;
-
   bool is_connected() const override;
 
 #ifdef UNIT_TESTS_BUILT
@@ -99,6 +97,10 @@ class SocketConnection : public Connection {
 
   seastar::socket_address get_local_address() const;
 
+  SocketMessenger &get_messenger() const {
+    return messenger;
+  }
+
   friend class Protocol;
   friend class ProtocolV2;
 };
index cc01f4de0768ac95c4e00ffe4f1774df0fda8fd2..accab32a99829671fac05685d301c68486b879da 100644 (file)
@@ -72,6 +72,11 @@ class SocketMessenger final : public Messenger {
 
   ConnectionRef connect(const entity_addr_t& peer_addr,
                         const entity_name_t& peer_name) override;
+
+  bool owns_connection(Connection &conn) const override {
+    return this == &static_cast<SocketConnection&>(conn).get_messenger();
+  }
+
   // can only wait once
   seastar::future<> wait() override {
     assert(seastar::this_shard_id() == master_sid);
index 37d7a68e2b159e032bdfe7d4666744c1bbfcaa0c..0f94d76f9c0a5d380929376f3cc7e42d8cdce5af 100644 (file)
@@ -410,7 +410,7 @@ class SyntheticWorkload {
          if (!p.first->get_default_policy().server &&
              !p.second->get_default_policy().server) {
              //verify that equal-to operator applies here
-           ceph_assert(conn->get_messenger() == p.first.get());
+           ceph_assert(p.first->owns_connection(*conn));
            crimson::net::ConnectionRef peer = p.second->connect(
              p.first->get_myaddr(), p.first->get_mytype());
            peer->mark_down();