]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc/Objecter: use unique_ptr<OSDMap> for Objecter::osdmap
authorKefu Chai <kchai@redhat.com>
Wed, 5 Jun 2019 02:43:05 +0000 (10:43 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 8 Jun 2019 15:34:52 +0000 (23:34 +0800)
Fixes: http://tracker.ceph.com/issues/38403
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/osdc/Objecter.cc
src/osdc/Objecter.h

index a30e18028773f351ef160d5fb25b00f0d4bdc5ca..cd5cbbee7f41f61c9ed9b6532f52044d48e1fc19 100644 (file)
@@ -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<OSDMap>();
           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();
index 31c9b3a77629e31a6dec5334714e79f06cca5096..b31c691deaf9c8f570c1e8205d650ee8949f17f6 100644 (file)
@@ -1228,7 +1228,7 @@ public:
   Finisher *finisher;
   ZTracer::Endpoint trace_endpoint;
 private:
-  OSDMap    *osdmap;
+  std::unique_ptr<OSDMap> osdmap;
 public:
   using Dispatcher::cct;
   std::multimap<std::string,std::string> 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<OSDMap>()},
     max_linger_id(0),
     keep_balanced_budget(false), honor_osdmap_full(true), osdmap_full_try(false),
     blacklist_events_enabled(false),