From 8f30bd868fb44991f9558cf4346773acec2b6eaa Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 5 Jun 2019 10:43:05 +0800 Subject: [PATCH] osdc/Objecter: use unique_ptr for Objecter::osdmap Fixes: http://tracker.ceph.com/issues/38403 Signed-off-by: Kefu Chai --- src/osdc/Objecter.cc | 8 ++------ src/osdc/Objecter.h | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index a30e1802877..cd5cbbee7f4 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1208,13 +1208,11 @@ void Objecter::handle_osd_map(MOSDMap *m) } else if (m->maps.count(e)) { ldout(cct, 3) << "handle_osd_map decoding full epoch " << e << dendl; - OSDMap *new_osdmap = new OSDMap(); + auto new_osdmap = std::make_unique(); new_osdmap->decode(m->maps[e]); emit_blacklist_events(*osdmap, *new_osdmap); - - delete osdmap; - osdmap = new_osdmap; + osdmap = std::move(new_osdmap); logger->inc(l_osdc_map_full); } @@ -4959,8 +4957,6 @@ Objecter::OSDSession::~OSDSession() Objecter::~Objecter() { - delete osdmap; - ceph_assert(homeless_session->get_nref() == 1); ceph_assert(num_homeless_ops == 0); homeless_session->put(); diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 31c9b3a7762..b31c691deaf 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -1228,7 +1228,7 @@ public: Finisher *finisher; ZTracer::Endpoint trace_endpoint; private: - OSDMap *osdmap; + std::unique_ptr osdmap; public: using Dispatcher::cct; std::multimap crush_location; @@ -2041,7 +2041,7 @@ private: double osd_timeout) : Dispatcher(cct_), messenger(m), monc(mc), finisher(fin), trace_endpoint("0.0.0.0", 0, "Objecter"), - osdmap(new OSDMap), + osdmap{std::make_unique()}, max_linger_id(0), keep_balanced_budget(false), honor_osdmap_full(true), osdmap_full_try(false), blacklist_events_enabled(false), -- 2.39.5