From 78e7d9051ae7000dcbb1f1f399fcda71cac0bf08 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 15 Apr 2019 14:55:24 +0800 Subject: [PATCH] mgr/MgrClient: use ref_t Signed-off-by: Kefu Chai --- src/messages/MMgrConfigure.h | 2 ++ src/messages/MMgrMap.h | 2 ++ src/mgr/MgrClient.cc | 29 +++++++++++------------------ src/mgr/MgrClient.h | 10 +++++----- src/mon/MgrMonitor.cc | 2 +- 5 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/messages/MMgrConfigure.h b/src/messages/MMgrConfigure.h index 55f8869954f46..1cf7bf7888911 100644 --- a/src/messages/MMgrConfigure.h +++ b/src/messages/MMgrConfigure.h @@ -65,6 +65,8 @@ private: MMgrConfigure() : Message{MSG_MGR_CONFIGURE, HEAD_VERSION, COMPAT_VERSION} {} + using RefCountedObject::put; + using RefCountedObject::get; template friend boost::intrusive_ptr ceph::make_message(Args&&... args); }; diff --git a/src/messages/MMgrMap.h b/src/messages/MMgrMap.h index 46c52ca9deb0d..76710bf7d59f9 100644 --- a/src/messages/MMgrMap.h +++ b/src/messages/MMgrMap.h @@ -49,6 +49,8 @@ public: encode(map, payload, features); } private: + using RefCountedObject::put; + using RefCountedObject::get; template friend boost::intrusive_ptr ceph::make_message(Args&&... args); }; diff --git a/src/mgr/MgrClient.cc b/src/mgr/MgrClient.cc index d2ecd02ee222c..49c66c6aeb38f 100644 --- a/src/mgr/MgrClient.cc +++ b/src/mgr/MgrClient.cc @@ -69,10 +69,10 @@ void MgrClient::shutdown() session->con && HAVE_FEATURE(session->con->get_features(), SERVER_MIMIC)) { ldout(cct, 10) << "closing mgr session" << dendl; - MMgrClose *m = new MMgrClose(); + auto m = make_message(); m->daemon_name = daemon_name; m->service_name = service_name; - session->con->send_message(m); + session->con->send_message2(m); utime_t timeout; timeout.set_from_double(cct->_conf.get_val( "mgr_client_service_daemon_unregister_timeout")); @@ -86,20 +86,20 @@ void MgrClient::shutdown() } } -bool MgrClient::ms_dispatch(Message *m) +bool MgrClient::ms_dispatch2(const ref_t& m) { std::lock_guard l(lock); switch(m->get_type()) { case MSG_MGR_MAP: - return handle_mgr_map(static_cast(m)); + return handle_mgr_map(ref_cast(m)); case MSG_MGR_CONFIGURE: - return handle_mgr_configure(static_cast(m)); + return handle_mgr_configure(ref_cast(m)); case MSG_MGR_CLOSE: - return handle_mgr_close(static_cast(m)); + return handle_mgr_close(ref_cast(m)); case MSG_COMMAND_REPLY: if (m->get_source().type() == CEPH_ENTITY_TYPE_MGR) { - handle_command_reply(static_cast(m)); + handle_command_reply(ref_cast(m)); return true; } else { return false; @@ -201,7 +201,7 @@ void MgrClient::_send_open() } } -bool MgrClient::handle_mgr_map(MMgrMap *m) +bool MgrClient::handle_mgr_map(ref_t m) { ceph_assert(lock.is_locked_by_me()); @@ -209,7 +209,6 @@ bool MgrClient::handle_mgr_map(MMgrMap *m) map = m->get_map(); ldout(cct, 4) << "Got map version " << map.epoch << dendl; - m->put(); ldout(cct, 4) << "Active mgr is now " << map.get_active_addrs() << dendl; @@ -375,7 +374,7 @@ void MgrClient::_send_pgstats() } } -bool MgrClient::handle_mgr_configure(MMgrConfigure *m) +bool MgrClient::handle_mgr_configure(ref_t m) { ceph_assert(lock.is_locked_by_me()); @@ -383,7 +382,6 @@ bool MgrClient::handle_mgr_configure(MMgrConfigure *m) if (!session) { lderr(cct) << "dropping unexpected configure message" << dendl; - m->put(); return true; } @@ -404,15 +402,13 @@ bool MgrClient::handle_mgr_configure(MMgrConfigure *m) _send_stats(); } - m->put(); return true; } -bool MgrClient::handle_mgr_close(MMgrClose *m) +bool MgrClient::handle_mgr_close(ref_t m) { service_daemon = false; shutdown_cond.Signal(); - m->put(); return true; } @@ -446,7 +442,7 @@ int MgrClient::start_command(const vector& cmd, const bufferlist& inbl, return 0; } -bool MgrClient::handle_command_reply(MCommandReply *m) +bool MgrClient::handle_command_reply(ref_t m) { ceph_assert(lock.is_locked_by_me()); @@ -456,7 +452,6 @@ bool MgrClient::handle_command_reply(MCommandReply *m) if (!command_table.exists(tid)) { ldout(cct, 4) << "handle_command_reply tid " << m->get_tid() << " not found" << dendl; - m->put(); return true; } @@ -474,8 +469,6 @@ bool MgrClient::handle_command_reply(MCommandReply *m) } command_table.erase(tid); - - m->put(); return true; } diff --git a/src/mgr/MgrClient.h b/src/mgr/MgrClient.h index 2b913c05b2b10..9c73ba9d26f3a 100644 --- a/src/mgr/MgrClient.h +++ b/src/mgr/MgrClient.h @@ -109,15 +109,15 @@ public: void set_mgr_optional(bool optional_) {mgr_optional = optional_;} - bool ms_dispatch(Message *m) override; + bool ms_dispatch2(const ceph::ref_t& m) override; bool ms_handle_reset(Connection *con) override; void ms_handle_remote_reset(Connection *con) override {} bool ms_handle_refused(Connection *con) override; - bool handle_mgr_map(MMgrMap *m); - bool handle_mgr_configure(MMgrConfigure *m); - bool handle_mgr_close(MMgrClose *m); - bool handle_command_reply(MCommandReply *m); + bool handle_mgr_map(ceph::ref_t m); + bool handle_mgr_configure(ceph::ref_t m); + bool handle_mgr_close(ceph::ref_t m); + bool handle_command_reply(ceph::ref_t m); void set_perf_metric_query_cb( std::functionmgr_client.ms_dispatch(new MMgrMap(map)); + mon->mgr_client.ms_dispatch2(make_message(map)); } void MgrMonitor::create_pending() -- 2.39.5