]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: use unique_ptr for managing life cycles 32007/head
authorKefu Chai <kchai@redhat.com>
Wed, 4 Dec 2019 15:44:05 +0000 (23:44 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 4 Dec 2019 15:51:04 +0000 (23:51 +0800)
instead of `new` and `delete` manually, use `unique_ptr<>` for managing
life cycles of member variables.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/osd/OSD.cc
src/osd/OSD.h

index 5b4c8b3c26b6dc5898d5ccf4b12ec3e90eb017f3..64bd402ac38221c66c8af8248ead8d84ef5eb13b 100644 (file)
@@ -248,7 +248,9 @@ OSDService::OSDService(OSD *osd) :
   last_recalibrate(ceph_clock_now()),
   promote_max_objects(0),
   promote_max_bytes(0),
-  objecter(new Objecter(osd->client_messenger->cct, osd->objecter_messenger, osd->monc, NULL, 0, 0)),
+  objecter(make_unique<Objecter>(osd->client_messenger->cct,
+                                osd->objecter_messenger,
+                                osd->monc, nullptr, 0, 0)),
   m_objecter_finishers(cct->_conf->osd_objecter_finishers),
   watch_timer(osd->client_messenger->cct, watch_lock),
   next_notif_id(0),
@@ -276,23 +278,11 @@ OSDService::OSDService(OSD *osd) :
   for (int i = 0; i < m_objecter_finishers; i++) {
     ostringstream str;
     str << "objecter-finisher-" << i;
-    Finisher *fin = new Finisher(osd->client_messenger->cct, str.str(), "finisher");
-    objecter_finishers.push_back(fin);
+    auto fin = make_unique<Finisher>(osd->client_messenger->cct, str.str(), "finisher");
+    objecter_finishers.push_back(std::move(fin));
   }
 }
 
-OSDService::~OSDService()
-{
-  delete objecter;
-
-  for (auto f : objecter_finishers) {
-    delete f;
-    f = NULL;
-  }
-}
-
-
-
 #ifdef PG_DEBUG_REFS
 void OSDService::add_pgid(spg_t pgid, PG *pg){
   std::lock_guard l(pgid_lock);
@@ -499,7 +489,7 @@ void OSDService::shutdown()
   }
 
   objecter->shutdown();
-  for (auto f : objecter_finishers) {
+  for (auto& f : objecter_finishers) {
     f->wait_for_empty();
     f->stop();
   }
@@ -511,7 +501,7 @@ void OSDService::shutdown()
 void OSDService::init()
 {
   reserver_finisher.start();
-  for (auto f : objecter_finishers) {
+  for (auto& f : objecter_finishers) {
     f->start();
   }
   objecter->set_client_incarnation(0);
@@ -3561,7 +3551,7 @@ int OSD::init()
   hb_front_server_messenger->add_dispatcher_head(&heartbeat_dispatcher);
   hb_back_server_messenger->add_dispatcher_head(&heartbeat_dispatcher);
 
-  objecter_messenger->add_dispatcher_head(service.objecter);
+  objecter_messenger->add_dispatcher_head(service.objecter.get());
 
   service.init();
   service.publish_map(osdmap);
index d6b5bcac5f38f46125f59a757ceb528959567cd5..30817f11559c629a0c078f2b8dfa91874534475b 100644 (file)
@@ -519,13 +519,13 @@ public:
     return m_objecter_finishers;
   }
   Finisher* get_objecter_finisher(int shard) {
-    return objecter_finishers[shard];
+    return objecter_finishers[shard].get();
   }
 
   // -- Objecter, for tiering reads/writes from/to other OSDs --
-  Objecter *objecter;
+  std::unique_ptr<Objecter> objecter;
   int m_objecter_finishers;
-  vector<Finisher*> objecter_finishers;
+  std::vector<std::unique_ptr<Finisher>> objecter_finishers;
 
   // -- Watch --
   ceph::mutex watch_lock = ceph::make_mutex("OSDService::watch_lock");
@@ -911,7 +911,7 @@ public:
 #endif
 
   explicit OSDService(OSD *osd);
-  ~OSDService();
+  ~OSDService() = default;
 };
 
 /*