From 8ec40b52d62896b3f2b11b188d255ee5ce84602e Mon Sep 17 00:00:00 2001 From: shangdehao1 Date: Fri, 8 Mar 2019 08:35:02 +0800 Subject: [PATCH] tools: cleanup RO - replace useless callback with bind function. - remove session_id and m_session_map. - fixed memory leak when session occur error - change type conversion. - add prefix Signed-off-by: Dehao Shang --- .../immutable_object_cache/CacheClient.cc | 1 - .../immutable_object_cache/CacheController.cc | 6 +++-- .../immutable_object_cache/CacheController.h | 1 - .../immutable_object_cache/CacheServer.cc | 4 +-- .../immutable_object_cache/CacheServer.h | 2 -- .../immutable_object_cache/CacheSession.cc | 27 ++++++++++--------- .../immutable_object_cache/CacheSession.h | 7 +++-- src/tools/immutable_object_cache/Types.h | 2 +- 8 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/tools/immutable_object_cache/CacheClient.cc b/src/tools/immutable_object_cache/CacheClient.cc index c56f98931ec..4af248f842e 100644 --- a/src/tools/immutable_object_cache/CacheClient.cc +++ b/src/tools/immutable_object_cache/CacheClient.cc @@ -18,7 +18,6 @@ namespace immutable_obj_cache { m_io_thread(nullptr), m_session_work(false), m_writing(false), m_reading(false), m_sequence_id(0), m_lock("ceph::cache::cacheclient::m_lock") { - // TODO(dehao) : configure it. m_worker_thread_num = m_cct->_conf.get_val( "immutable_object_cache_client_dedicated_thread_num"); diff --git a/src/tools/immutable_object_cache/CacheController.cc b/src/tools/immutable_object_cache/CacheController.cc index 4e406bd54c0..70146008d7f 100644 --- a/src/tools/immutable_object_cache/CacheController.cc +++ b/src/tools/immutable_object_cache/CacheController.cc @@ -71,7 +71,8 @@ void CacheController::run() { std::remove(controller_path.c_str()); m_cache_server = new CacheServer(m_cct, controller_path, - ([&](CacheSession* p, ObjectCacheRequest* s){handle_request(p, s);})); + std::bind(&CacheController::handle_request, this, + std::placeholders::_1, std::placeholders::_2)); int ret = m_cache_server->run(); if (ret != 0) { @@ -98,7 +99,8 @@ void CacheController::handle_request(CacheSession* session, case RBDSC_READ: { // lookup object in local cache store std::string cache_path; - ObjectCacheReadData* req_read_data = (ObjectCacheReadData*)req; + ObjectCacheReadData* req_read_data = + reinterpret_cast (req); int ret = m_object_cache_store->lookup_object( req_read_data->pool_namespace, req_read_data->pool_id, req_read_data->snap_id, req_read_data->oid, cache_path); diff --git a/src/tools/immutable_object_cache/CacheController.h b/src/tools/immutable_object_cache/CacheController.h index 6c46b37b207..bdb5c8e63fc 100644 --- a/src/tools/immutable_object_cache/CacheController.h +++ b/src/tools/immutable_object_cache/CacheController.h @@ -25,7 +25,6 @@ class CacheController { void run(); - void handle_request(uint64_t sesstion_id, ObjectCacheRequest* msg); void handle_request(CacheSession* session, ObjectCacheRequest* msg); private: diff --git a/src/tools/immutable_object_cache/CacheServer.cc b/src/tools/immutable_object_cache/CacheServer.cc index d6fecb079d4..7e68d7e8751 100644 --- a/src/tools/immutable_object_cache/CacheServer.cc +++ b/src/tools/immutable_object_cache/CacheServer.cc @@ -76,7 +76,7 @@ int CacheServer::start_accept() { void CacheServer::accept() { CacheSessionPtr new_session = nullptr; - new_session.reset(new CacheSession(m_session_id, m_io_service, + new_session.reset(new CacheSession(m_io_service, m_server_process_msg, cct)); m_acceptor.async_accept(new_session->socket(), @@ -93,10 +93,8 @@ void CacheServer::handle_accept(CacheSessionPtr new_session, return; } - m_session_map.emplace(m_session_id, new_session); // TODO(dehao) : session setting new_session->start(); - m_session_id++; // lanuch next accept accept(); diff --git a/src/tools/immutable_object_cache/CacheServer.h b/src/tools/immutable_object_cache/CacheServer.h index 04566992178..31d8599340d 100644 --- a/src/tools/immutable_object_cache/CacheServer.h +++ b/src/tools/immutable_object_cache/CacheServer.h @@ -37,8 +37,6 @@ class CacheServer { ProcessMsg m_server_process_msg; stream_protocol::endpoint m_local_path; stream_protocol::acceptor m_acceptor; - uint64_t m_session_id = 1; - std::map m_session_map; }; } // namespace immutable_obj_cache diff --git a/src/tools/immutable_object_cache/CacheSession.cc b/src/tools/immutable_object_cache/CacheSession.cc index e567f43a7c6..c5ec0342878 100644 --- a/src/tools/immutable_object_cache/CacheSession.cc +++ b/src/tools/immutable_object_cache/CacheSession.cc @@ -15,10 +15,11 @@ namespace ceph { namespace immutable_obj_cache { -CacheSession::CacheSession(uint64_t session_id, io_service& io_service, - ProcessMsg processmsg, CephContext* cct) - : m_session_id(session_id), m_dm_socket(io_service), - m_server_process_msg(processmsg), cct(cct) { +CacheSession::CacheSession(io_service& io_service, + ProcessMsg processmsg, + CephContext* cct) + : m_dm_socket(io_service), + m_server_process_msg(processmsg), m_cct(cct) { m_bp_header = buffer::create(get_header_size()); } @@ -35,7 +36,7 @@ void CacheSession::close() { boost::system::error_code close_ec; m_dm_socket.close(close_ec); if (close_ec) { - ldout(cct, 20) << "close: " << close_ec.message() << dendl; + ldout(m_cct, 20) << "close: " << close_ec.message() << dendl; } } } @@ -45,7 +46,7 @@ void CacheSession::start() { } void CacheSession::read_request_header() { - ldout(cct, 20) << dendl; + ldout(m_cct, 20) << dendl; boost::asio::async_read(m_dm_socket, boost::asio::buffer(m_bp_header.c_str(), get_header_size()), boost::asio::transfer_exactly(get_header_size()), @@ -56,7 +57,7 @@ void CacheSession::read_request_header() { void CacheSession::handle_request_header(const boost::system::error_code& err, size_t bytes_transferred) { - ldout(cct, 20) << dendl; + ldout(m_cct, 20) << dendl; if (err || bytes_transferred != get_header_size()) { fault(); return; @@ -66,7 +67,7 @@ void CacheSession::handle_request_header(const boost::system::error_code& err, } void CacheSession::read_request_data(uint64_t data_len) { - ldout(cct, 20) << dendl; + ldout(m_cct, 20) << dendl; bufferptr bp_data(buffer::create(data_len)); boost::asio::async_read(m_dm_socket, boost::asio::buffer(bp_data.c_str(), bp_data.length()), @@ -80,7 +81,7 @@ void CacheSession::read_request_data(uint64_t data_len) { void CacheSession::handle_request_data(bufferptr bp, uint64_t data_len, const boost::system::error_code& err, size_t bytes_transferred) { - ldout(cct, 20) << dendl; + ldout(m_cct, 20) << dendl; if (err || bytes_transferred != data_len) { fault(); return; @@ -98,12 +99,12 @@ void CacheSession::handle_request_data(bufferptr bp, uint64_t data_len, } void CacheSession::process(ObjectCacheRequest* req) { - ldout(cct, 20) << dendl; + ldout(m_cct, 20) << dendl; m_server_process_msg(this, req); } void CacheSession::send(ObjectCacheRequest* reply) { - ldout(cct, 20) << dendl; + ldout(m_cct, 20) << dendl; bufferlist bl; reply->encode(); bl.append(reply->get_payload_bufferlist()); @@ -113,16 +114,16 @@ void CacheSession::send(ObjectCacheRequest* reply) { boost::asio::transfer_exactly(bl.length()), [this, bl, reply](const boost::system::error_code& err, size_t bytes_transferred) { + delete reply; if (err || bytes_transferred != bl.length()) { fault(); return; } - delete reply; }); } void CacheSession::fault() { - ldout(cct, 20) << dendl; + ldout(m_cct, 20) << dendl; // TODO(dehao) } diff --git a/src/tools/immutable_object_cache/CacheSession.h b/src/tools/immutable_object_cache/CacheSession.h index 36bd5dbaad9..2e66aa83f35 100644 --- a/src/tools/immutable_object_cache/CacheSession.h +++ b/src/tools/immutable_object_cache/CacheSession.h @@ -19,8 +19,8 @@ namespace immutable_obj_cache { class CacheSession : public std::enable_shared_from_this { public: - CacheSession(uint64_t session_id, io_service& io_service, - ProcessMsg process_msg, CephContext* ctx); + CacheSession(io_service& io_service, ProcessMsg process_msg, + CephContext* ctx); ~CacheSession(); stream_protocol::socket& socket(); void close(); @@ -37,10 +37,9 @@ class CacheSession : public std::enable_shared_from_this { void send(ObjectCacheRequest* msg); private: - uint64_t m_session_id; stream_protocol::socket m_dm_socket; ProcessMsg m_server_process_msg; - CephContext* cct; + CephContext* m_cct; bufferptr m_bp_header; }; diff --git a/src/tools/immutable_object_cache/Types.h b/src/tools/immutable_object_cache/Types.h index 470f764e0b5..fb2ef13f4da 100644 --- a/src/tools/immutable_object_cache/Types.h +++ b/src/tools/immutable_object_cache/Types.h @@ -23,7 +23,7 @@ inline uint8_t get_header_size() { } inline uint32_t get_data_len(char* buf) { - HeaderHelper* header = (HeaderHelper*)buf; + HeaderHelper* header = reinterpret_cast(buf); return header->len; } } // namespace -- 2.39.5