From 7186dda8f2d1d003dcb539c9435a18f2fe4eafd7 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Thu, 13 Oct 2022 16:17:00 +0800 Subject: [PATCH] crimson/net: drop Connection::get_messenger() Simplify Connection interface for multi-core support. Signed-off-by: Yingxin Cheng --- src/crimson/mon/MonClient.cc | 12 ++++-------- src/crimson/net/Connection.h | 1 - src/crimson/net/Messenger.h | 2 ++ src/crimson/net/SocketConnection.cc | 5 ----- src/crimson/net/SocketConnection.h | 6 ++++-- src/crimson/net/SocketMessenger.h | 5 +++++ src/test/crimson/test_messenger_thrash.cc | 2 +- 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/crimson/mon/MonClient.cc b/src/crimson/mon/MonClient.cc index c79ac46c6da..3d672761aad 100644 --- a/src/crimson/mon/MonClient.cc +++ b/src/crimson/mon/MonClient.cc @@ -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 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); diff --git a/src/crimson/net/Connection.h b/src/crimson/net/Connection.h index b2d2b236f2f..0f6bbb7ae8f 100644 --- a/src/crimson/net/Connection.h +++ b/src/crimson/net/Connection.h @@ -104,7 +104,6 @@ class Connection : public seastar::enable_shared_from_this { 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); diff --git a/src/crimson/net/Messenger.h b/src/crimson/net/Messenger.h index 1e24b9466a5..a34db2e42db 100644 --- a/src/crimson/net/Messenger.h +++ b/src/crimson/net/Messenger.h @@ -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; diff --git a/src/crimson/net/SocketConnection.cc b/src/crimson/net/SocketConnection.cc index f8664a9f711..cc6abdacf26 100644 --- a/src/crimson/net/SocketConnection.cc +++ b/src/crimson/net/SocketConnection.cc @@ -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()); diff --git a/src/crimson/net/SocketConnection.h b/src/crimson/net/SocketConnection.h index bb158d57e46..814e75d935d 100644 --- a/src/crimson/net/SocketConnection.h +++ b/src/crimson/net/SocketConnection.h @@ -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; }; diff --git a/src/crimson/net/SocketMessenger.h b/src/crimson/net/SocketMessenger.h index cc01f4de076..accab32a998 100644 --- a/src/crimson/net/SocketMessenger.h +++ b/src/crimson/net/SocketMessenger.h @@ -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(conn).get_messenger(); + } + // can only wait once seastar::future<> wait() override { assert(seastar::this_shard_id() == master_sid); diff --git a/src/test/crimson/test_messenger_thrash.cc b/src/test/crimson/test_messenger_thrash.cc index 37d7a68e2b1..0f94d76f9c0 100644 --- a/src/test/crimson/test_messenger_thrash.cc +++ b/src/test/crimson/test_messenger_thrash.cc @@ -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(); -- 2.39.5