]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: svc: hold services in unique_ptr
authorYehuda Sadeh <yehuda@redhat.com>
Fri, 5 Oct 2018 20:56:42 +0000 (13:56 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Thu, 8 Nov 2018 17:19:29 +0000 (09:19 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
13 files changed:
src/rgw/rgw_service.cc
src/rgw/rgw_service.h
src/rgw/services/svc_finisher.h
src/rgw/services/svc_notify.h
src/rgw/services/svc_quota.h
src/rgw/services/svc_sys_obj.cc
src/rgw/services/svc_sys_obj.h
src/rgw/services/svc_sys_obj_cache.h
src/rgw/services/svc_sys_obj_core.cc
src/rgw/services/svc_sys_obj_core.h
src/rgw/services/svc_zone.cc
src/rgw/services/svc_zone.h
src/rgw/services/svc_zone_utils.h

index a39d2714d04cfc44cb61d13b60f17ef377bd30ce..1c4c04dd70d3a937645b50e2fb5a8db67f78aba8 100644 (file)
 #define dout_subsys ceph_subsys_rgw
 
 
-int RGWServices_Shared::init(CephContext *cct,
-                             bool have_cache)
+RGWServices_Def::RGWServices_Def() = default;
+RGWServices_Def::~RGWServices_Def() = default;
+
+int RGWServices_Def::init(CephContext *cct,
+                         bool have_cache)
 {
-  finisher = std::make_shared<RGWSI_Finisher>(cct);
-  notify = std::make_shared<RGWSI_Notify>(cct);
-  rados = std::make_shared<RGWSI_RADOS>(cct);
-  zone = std::make_shared<RGWSI_Zone>(cct);
-  zone_utils = std::make_shared<RGWSI_ZoneUtils>(cct);
-  quota = std::make_shared<RGWSI_Quota>(cct);
-  sync_modules = std::make_shared<RGWSI_SyncModules>(cct);
-  sysobj = std::make_shared<RGWSI_SysObj>(cct);
-  sysobj_core = std::make_shared<RGWSI_SysObj_Core>(cct);
+  finisher = std::make_unique<RGWSI_Finisher>(cct);
+  notify = std::make_unique<RGWSI_Notify>(cct);
+  rados = std::make_unique<RGWSI_RADOS>(cct);
+  zone = std::make_unique<RGWSI_Zone>(cct);
+  zone_utils = std::make_unique<RGWSI_ZoneUtils>(cct);
+  quota = std::make_unique<RGWSI_Quota>(cct);
+  sync_modules = std::make_unique<RGWSI_SyncModules>(cct);
+  sysobj = std::make_unique<RGWSI_SysObj>(cct);
+  sysobj_core = std::make_unique<RGWSI_SysObj_Core>(cct);
 
   if (have_cache) {
-    sysobj_cache = std::make_shared<RGWSI_SysObj_Cache>(cct);
+    sysobj_cache = std::make_unique<RGWSI_SysObj_Cache>(cct);
   }
   finisher->init();
-  notify->init(zone, rados, finisher);
+  notify->init(zone.get(), rados.get(), finisher.get());
   rados->init();
-  zone->init(sysobj, rados, sync_modules);
-  zone_utils->init(rados, zone);
-  quota->init(zone);
+  zone->init(sysobj.get(), rados.get(), sync_modules.get());
+  zone_utils->init(rados.get(), zone.get());
+  quota->init(zone.get());
   sync_modules->init();
-  sysobj_core->core_init(rados, zone);
+  sysobj_core->core_init(rados.get(), zone.get());
   if (have_cache) {
-    sysobj_cache->init(rados, zone, notify);
-    auto _cache = std::static_pointer_cast<RGWSI_SysObj_Core>(sysobj_cache);
-    sysobj->init(rados, _cache);
+    sysobj_cache->init(rados.get(), zone.get(), notify.get());
+    sysobj->init(rados.get(), sysobj_cache.get());
   } else {
-    sysobj->init(rados, sysobj_core);
+    sysobj->init(rados.get(), sysobj_core.get());
   }
 
 
index ebb33f39fcc1238a3b78dee351024186b995447d..c698c16ade740d990096626c2bcf50bf6b054d2a 100644 (file)
@@ -52,18 +52,21 @@ class RGWSI_SysObj;
 class RGWSI_SysObj_Core;
 class RGWSI_SysObj_Cache;
 
-struct RGWServices_Shared
+struct RGWServices_Def
 {
-  std::shared_ptr<RGWSI_Finisher> finisher;
-  std::shared_ptr<RGWSI_Notify> notify;
-  std::shared_ptr<RGWSI_RADOS> rados;
-  std::shared_ptr<RGWSI_Zone> zone;
-  std::shared_ptr<RGWSI_ZoneUtils> zone_utils;
-  std::shared_ptr<RGWSI_Quota> quota;
-  std::shared_ptr<RGWSI_SyncModules> sync_modules;
-  std::shared_ptr<RGWSI_SysObj> sysobj;
-  std::shared_ptr<RGWSI_SysObj_Core> sysobj_core;
-  std::shared_ptr<RGWSI_SysObj_Cache> sysobj_cache;
+  std::unique_ptr<RGWSI_Finisher> finisher;
+  std::unique_ptr<RGWSI_Notify> notify;
+  std::unique_ptr<RGWSI_RADOS> rados;
+  std::unique_ptr<RGWSI_Zone> zone;
+  std::unique_ptr<RGWSI_ZoneUtils> zone_utils;
+  std::unique_ptr<RGWSI_Quota> quota;
+  std::unique_ptr<RGWSI_SyncModules> sync_modules;
+  std::unique_ptr<RGWSI_SysObj> sysobj;
+  std::unique_ptr<RGWSI_SysObj_Core> sysobj_core;
+  std::unique_ptr<RGWSI_SysObj_Cache> sysobj_cache;
+
+  RGWServices_Def();
+  ~RGWServices_Def();
 
   int init(CephContext *cct, bool have_cache);
 };
@@ -71,7 +74,7 @@ struct RGWServices_Shared
 
 struct RGWServices
 {
-  RGWServices_Shared _svc;
+  RGWServices_Def _svc;
 
   RGWSI_Finisher *finisher{nullptr};
   RGWSI_Notify *notify{nullptr};
index 7660ed14cdc1543213f5b72aab4219fe20a837ea..c1ae589e9dc1eea8ac762044a45e007fc0a18f06 100644 (file)
@@ -9,7 +9,7 @@ class Finisher;
 
 class RGWSI_Finisher : public RGWServiceInstance
 {
-  friend struct RGWServices_Shared;
+  friend struct RGWServices_Def;
 public:
   class ShutdownCB;
 
index 2601b8b14f8a2e6b14cad9e6714785cb4f894bdd..3dfbfd3e4ee2e5210200b50231c2cc33dab1924a 100644 (file)
@@ -17,15 +17,15 @@ class RGWSI_Notify : public RGWServiceInstance
 {
   friend class RGWWatcher;
   friend class RGWSI_Notify_ShutdownCB;
-  friend class RGWServices_Shared;
+  friend class RGWServices_Def;
 
 public:
   class CB;
 
 private:
-  std::shared_ptr<RGWSI_Zone> zone_svc;
-  std::shared_ptr<RGWSI_RADOS> rados_svc;
-  std::shared_ptr<RGWSI_Finisher> finisher_svc;
+  RGWSI_Zone *zone_svc{nullptr};
+  RGWSI_RADOS *rados_svc{nullptr};
+  RGWSI_Finisher *finisher_svc{nullptr};
 
   RWLock watchers_lock{"watchers_lock"};
   rgw_pool control_pool;
@@ -51,9 +51,9 @@ private:
   int init_watch();
   void finalize_watch();
 
-  void init(std::shared_ptr<RGWSI_Zone>& _zone_svc,
-            std::shared_ptr<RGWSI_RADOS>& _rados_svc,
-            std::shared_ptr<RGWSI_Finisher>& _finisher_svc) {
+  void init(RGWSI_Zone *_zone_svc,
+            RGWSI_RADOS *_rados_svc,
+            RGWSI_Finisher *_finisher_svc) {
     zone_svc = _zone_svc;
     rados_svc = _rados_svc;
     finisher_svc = _finisher_svc;
index 9e063d7df9022f717a751b8bab0bbc87347d6a6a..7dfbf19b612b4197c62afde317e166ea7e492c5e 100644 (file)
@@ -7,12 +7,12 @@
 
 class RGWSI_Quota : public RGWServiceInstance
 {
-  std::shared_ptr<RGWSI_Zone> zone_svc;
+  RGWSI_Zone *zone_svc{nullptr};
 
 public:
   RGWSI_Quota(CephContext *cct): RGWServiceInstance(cct) {}
 
-  void init(std::shared_ptr<RGWSI_Zone>& _zone_svc) {
+  void init(RGWSI_Zone *_zone_svc) {
     zone_svc = _zone_svc;
   }
 
index 7a6969116dc67e6fe6d8f34560f274a1efdbca77..588a520acfec53aa3d4b0ee831fa099c62ae73be 100644 (file)
@@ -14,7 +14,7 @@ RGWSysObjectCtx RGWSI_SysObj::init_obj_ctx()
 
 RGWSI_SysObj::Obj RGWSI_SysObj::get_obj(RGWSysObjectCtx& obj_ctx, const rgw_raw_obj& obj)
 {
-  return Obj(core_svc.get(), obj_ctx, obj);
+  return Obj(core_svc, obj_ctx, obj);
 }
 
 void RGWSI_SysObj::Obj::invalidate()
index 8c3701f52e5996f710434d7ed12d22769bb7022d..591fe2212df34410950166b1c83117ff12ce5fe9 100644 (file)
@@ -16,7 +16,7 @@ struct rgw_cache_entry_info;
 
 class RGWSI_SysObj : public RGWServiceInstance
 {
-  friend struct RGWServices_Shared;
+  friend struct RGWServices_Def;
 
 public:
   class Obj {
@@ -230,11 +230,11 @@ public:
   friend class Pool::Op;
 
 protected:
-  std::shared_ptr<RGWSI_RADOS> rados_svc;
-  std::shared_ptr<RGWSI_SysObj_Core> core_svc;
+  RGWSI_RADOS *rados_svc{nullptr};
+  RGWSI_SysObj_Core *core_svc{nullptr};
 
-  void init(std::shared_ptr<RGWSI_RADOS>& _rados_svc,
-            std::shared_ptr<RGWSI_SysObj_Core>& _core_svc) {
+  void init(RGWSI_RADOS *_rados_svc,
+            RGWSI_SysObj_Core *_core_svc) {
     rados_svc = _rados_svc;
     core_svc = _core_svc;
   }
@@ -246,7 +246,7 @@ public:
   Obj get_obj(RGWSysObjectCtx& obj_ctx, const rgw_raw_obj& obj);
 
   Pool get_pool(const rgw_pool& pool) {
-    return Pool(rados_svc.get(), core_svc.get(), pool);
+    return Pool(rados_svc, core_svc, pool);
   }
 
   RGWSI_Zone *get_zone_svc();
index a7d09c48043c9688c0853669684a2663d76c6a94..98be1c6c50df480b045b565fa68cd27c4161b285 100644 (file)
@@ -15,18 +15,18 @@ class RGWSI_SysObj_Cache_CB;
 class RGWSI_SysObj_Cache : public RGWSI_SysObj_Core
 {
   friend class RGWSI_SysObj_Cache_CB;
-  friend class RGWServices_Shared;
+  friend class RGWServices_Def;
 
-  std::shared_ptr<RGWSI_Notify> notify_svc;
+  RGWSI_Notify *notify_svc{nullptr};
   ObjectCache cache;
 
   std::shared_ptr<RGWSI_SysObj_Cache_CB> cb;
 
   void normalize_pool_and_obj(const rgw_pool& src_pool, const string& src_obj, rgw_pool& dst_pool, string& dst_obj);
 protected:
-  void init(std::shared_ptr<RGWSI_RADOS>& _rados_svc,
-            std::shared_ptr<RGWSI_Zone>& _zone_svc,
-            std::shared_ptr<RGWSI_Notify>& _notify_svc) {
+  void init(RGWSI_RADOS *_rados_svc,
+            RGWSI_Zone *_zone_svc,
+            RGWSI_Notify *_notify_svc) {
     core_init(_rados_svc, _zone_svc);
     notify_svc = _notify_svc;
   }
index 5e0a8eb40e3c884caf542ccaf449322eabfcd799..f57337b09a71ace0c65787a302cc8cdf355ad337 100644 (file)
@@ -100,7 +100,7 @@ int RGWSI_SysObj_Core::raw_stat(const rgw_raw_obj& obj, uint64_t *psize, real_ti
                                 RGWObjVersionTracker *objv_tracker)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     return r;
   }
@@ -208,7 +208,7 @@ int RGWSI_SysObj_Core::read(RGWSysObjectCtxBase& obj_ctx,
   }
 
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -245,7 +245,7 @@ int RGWSI_SysObj_Core::get_attr(const rgw_raw_obj& obj,
                                 bufferlist *dest)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -269,7 +269,7 @@ int RGWSI_SysObj_Core::set_attrs(const rgw_raw_obj& obj,
                                  RGWObjVersionTracker *objv_tracker) 
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -318,7 +318,7 @@ int RGWSI_SysObj_Core::omap_get_vals(const rgw_raw_obj& obj,
                                      bool *pmore)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -355,7 +355,7 @@ int RGWSI_SysObj_Core::omap_get_vals(const rgw_raw_obj& obj,
 int RGWSI_SysObj_Core::omap_get_all(const rgw_raw_obj& obj, std::map<string, bufferlist> *m)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -389,7 +389,7 @@ int RGWSI_SysObj_Core::omap_get_all(const rgw_raw_obj& obj, std::map<string, buf
 int RGWSI_SysObj_Core::omap_set(const rgw_raw_obj& obj, const std::string& key, bufferlist& bl, bool must_exist)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -410,7 +410,7 @@ int RGWSI_SysObj_Core::omap_set(const rgw_raw_obj& obj, const std::string& key,
 int RGWSI_SysObj_Core::omap_set(const rgw_raw_obj& obj, const std::map<std::string, bufferlist>& m, bool must_exist)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -427,7 +427,7 @@ int RGWSI_SysObj_Core::omap_set(const rgw_raw_obj& obj, const std::map<std::stri
 int RGWSI_SysObj_Core::omap_del(const rgw_raw_obj& obj, const std::string& key)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -450,7 +450,7 @@ int RGWSI_SysObj_Core::notify(const rgw_raw_obj& obj,
                              bufferlist *pbl)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -465,7 +465,7 @@ int RGWSI_SysObj_Core::remove(RGWSysObjectCtxBase& obj_ctx,
                          const rgw_raw_obj& obj)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -494,7 +494,7 @@ int RGWSI_SysObj_Core::write(const rgw_raw_obj& obj,
                              real_time set_mtime)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
@@ -557,7 +557,7 @@ int RGWSI_SysObj_Core::write_data(const rgw_raw_obj& obj,
                                   RGWObjVersionTracker *objv_tracker)
 {
   RGWSI_RADOS::Obj rados_obj;
-  int r = get_rados_obj(zone_svc.get(), obj, &rados_obj);
+  int r = get_rados_obj(zone_svc, obj, &rados_obj);
   if (r < 0) {
     ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
     return r;
index e40f7d704cba26eb0164245a8b3c9981f68f8f47..3ad8a014d4442bc0e035a11b665e79cfe60ffba2 100644 (file)
@@ -96,12 +96,12 @@ public:
 
 class RGWSI_SysObj_Core : public RGWServiceInstance
 {
-  friend class RGWServices_Shared;
+  friend class RGWServices_Def;
   friend class RGWSI_SysObj;
 
 protected:
-  std::shared_ptr<RGWSI_RADOS> rados_svc;
-  std::shared_ptr<RGWSI_Zone> zone_svc;
+  RGWSI_RADOS *rados_svc{nullptr};
+  RGWSI_Zone *zone_svc{nullptr};
 
   struct GetObjState {
     RGWSI_RADOS::Obj rados_obj;
@@ -117,8 +117,8 @@ protected:
   };
 
 
-  void core_init(std::shared_ptr<RGWSI_RADOS>& _rados_svc,
-                 std::shared_ptr<RGWSI_Zone>& _zone_svc) {
+  void core_init(RGWSI_RADOS *_rados_svc,
+                 RGWSI_Zone *_zone_svc) {
     rados_svc = _rados_svc;
     zone_svc = _zone_svc;
   }
@@ -192,7 +192,7 @@ public:
   RGWSI_SysObj_Core(CephContext *cct): RGWServiceInstance(cct) {}
 
   RGWSI_Zone *get_zone_svc() {
-    return zone_svc.get();
+    return zone_svc;
   }
 };
 
index 920e81d1c9d5ef7a4d0ad4d8d8d6fa209e1acd1d..9d00ca19092fb674ad690f5ef67500d448e25083 100644 (file)
@@ -17,9 +17,9 @@ RGWSI_Zone::RGWSI_Zone(CephContext *cct) : RGWServiceInstance(cct)
 {
 }
 
-void RGWSI_Zone::init(std::shared_ptr<RGWSI_SysObj>& _sysobj_svc,
-                      std::shared_ptr<RGWSI_RADOS>& _rados_svc,
-                      std::shared_ptr<RGWSI_SyncModules>& _sync_modules_svc)
+void RGWSI_Zone::init(RGWSI_SysObj *_sysobj_svc,
+                      RGWSI_RADOS * _rados_svc,
+                      RGWSI_SyncModules * _sync_modules_svc)
 {
   sysobj_svc = _sysobj_svc;
   rados_svc = _rados_svc;
@@ -64,13 +64,13 @@ int RGWSI_Zone::do_start()
   if (ret < 0) {
     return ret;
   }
-  ret = realm->init(cct, sysobj_svc.get());
+  ret = realm->init(cct, sysobj_svc);
   if (ret < 0 && ret != -ENOENT) {
     ldout(cct, 0) << "failed reading realm info: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
     return ret;
   } else if (ret != -ENOENT) {
     ldout(cct, 20) << "realm  " << realm->get_name() << " " << realm->get_id() << dendl;
-    ret = current_period->init(cct, sysobj_svc.get(), realm->get_id(), realm->get_name());
+    ret = current_period->init(cct, sysobj_svc, realm->get_id(), realm->get_name());
     if (ret < 0 && ret != -ENOENT) {
       ldout(cct, 0) << "failed reading current period info: " << " " << cpp_strerror(-ret) << dendl;
       return ret;
@@ -109,7 +109,7 @@ int RGWSI_Zone::do_start()
     }
     // read period_config into current_period
     auto& period_config = current_period->get_config();
-    ret = period_config.read(sysobj_svc.get(), zonegroup->realm_id);
+    ret = period_config.read(sysobj_svc, zonegroup->realm_id);
     if (ret < 0 && ret != -ENOENT) {
       ldout(cct, 0) << "ERROR: failed to read period config: "
           << cpp_strerror(ret) << dendl;
@@ -123,7 +123,7 @@ int RGWSI_Zone::do_start()
     zone_params->set_name(default_zone_name);
   }
 
-  ret = zone_params->init(cct, sysobj_svc.get());
+  ret = zone_params->init(cct, sysobj_svc);
   if (ret < 0 && ret != -ENOENT) {
     lderr(cct) << "failed reading zone info: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
     return ret;
@@ -236,7 +236,7 @@ int RGWSI_Zone::list_zones(list<string>& zones)
 
 int RGWSI_Zone::list_realms(list<string>& realms)
 {
-  RGWRealm realm(cct, sysobj_svc.get());
+  RGWRealm realm(cct, sysobj_svc);
   RGWSI_SysObj::Pool syspool = sysobj_svc->get_pool(realm.get_pool(cct));
 
   return syspool.op().list_prefixed_objs(zonegroup_names_oid_prefix, &realms);
@@ -271,7 +271,7 @@ int RGWSI_Zone::list_periods(const string& current_period, list<string>& periods
   string period_id = current_period;
   while(!period_id.empty()) {
     RGWPeriod period(period_id);
-    ret = period.init(cct, sysobj_svc.get());
+    ret = period.init(cct, sysobj_svc);
     if (ret < 0) {
       return ret;
     }
@@ -315,7 +315,7 @@ int RGWSI_Zone::replace_region_with_zonegroup()
   }
 
   string default_region;
-  ret = default_zonegroup.init(cct, sysobj_svc.get(), false, true);
+  ret = default_zonegroup.init(cct, sysobj_svc, false, true);
   if (ret < 0) {
     ldout(cct, 0) <<  __func__ << " failed init default region: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
     return ret;
@@ -334,14 +334,14 @@ int RGWSI_Zone::replace_region_with_zonegroup()
     return ret;
   } else if (ret == -ENOENT || regions.empty()) {
     RGWZoneParams zoneparams(default_zone_name);
-    int ret = zoneparams.init(cct, sysobj_svc.get());
+    int ret = zoneparams.init(cct, sysobj_svc);
     if (ret < 0 && ret != -ENOENT) {
       ldout(cct, 0) << __func__ << ": error initializing default zone params: " << cpp_strerror(-ret) << dendl;
       return ret;
     }
     /* update master zone */
     RGWZoneGroup default_zg(default_zonegroup_name);
-    ret = default_zg.init(cct, sysobj_svc.get());
+    ret = default_zg.init(cct, sysobj_svc);
     if (ret < 0 && ret != -ENOENT) {
       ldout(cct, 0) << __func__ << ": error in initializing default zonegroup: " << cpp_strerror(-ret) << dendl;
       return ret;
@@ -357,7 +357,7 @@ int RGWSI_Zone::replace_region_with_zonegroup()
   for (list<string>::iterator iter = regions.begin(); iter != regions.end(); ++iter) {
     if (*iter != default_zonegroup_name){
       RGWZoneGroup region(*iter);
-      int ret = region.init(cct, sysobj_svc.get(), true, true);
+      int ret = region.init(cct, sysobj_svc, true, true);
       if (ret < 0) {
          ldout(cct, 0) <<  __func__ << " failed init region "<< *iter << ": " << cpp_strerror(-ret) << dendl;
          return ret;
@@ -382,7 +382,7 @@ int RGWSI_Zone::replace_region_with_zonegroup()
     buf_to_hex(md5, CEPH_CRYPTO_MD5_DIGESTSIZE, md5_str);
     string new_realm_id(md5_str);
     RGWRealm new_realm(new_realm_id,new_realm_name);
-    ret = new_realm.init(cct, sysobj_svc.get(), false);
+    ret = new_realm.init(cct, sysobj_svc, false);
     if (ret < 0) {
       ldout(cct, 0) <<  __func__ << " Error initing new realm: " << cpp_strerror(-ret)  << dendl;
       return ret;
@@ -397,12 +397,12 @@ int RGWSI_Zone::replace_region_with_zonegroup()
       ldout(cct, 0) << __func__ << " Error setting realm as default: " << cpp_strerror(-ret)  << dendl;
       return ret;
     }
-    ret = realm->init(cct, sysobj_svc.get());
+    ret = realm->init(cct, sysobj_svc);
     if (ret < 0) {
       ldout(cct, 0) << __func__ << " Error initing realm: " << cpp_strerror(-ret)  << dendl;
       return ret;
     }
-    ret = current_period->init(cct, sysobj_svc.get(), realm->get_id(), realm->get_name());
+    ret = current_period->init(cct, sysobj_svc, realm->get_id(), realm->get_name());
     if (ret < 0) {
       ldout(cct, 0) << __func__ << " Error initing current period: " << cpp_strerror(-ret)  << dendl;
       return ret;
@@ -416,7 +416,7 @@ int RGWSI_Zone::replace_region_with_zonegroup()
     ldout(cct, 0) << __func__ << " Converting  " << *iter << dendl;
     /* check to see if we don't have already a zonegroup with this name */
     RGWZoneGroup new_zonegroup(*iter);
-    ret = new_zonegroup.init(cct , sysobj_svc.get());
+    ret = new_zonegroup.init(cct , sysobj_svc);
     if (ret == 0 && new_zonegroup.get_id() != *iter) {
       ldout(cct, 0) << __func__ << " zonegroup  "<< *iter << " already exists id " << new_zonegroup.get_id () <<
        " skipping conversion " << dendl;
@@ -424,7 +424,7 @@ int RGWSI_Zone::replace_region_with_zonegroup()
     }
     RGWZoneGroup zonegroup(*iter);
     zonegroup.set_id(*iter);
-    int ret = zonegroup.init(cct, sysobj_svc.get(), true, true);
+    int ret = zonegroup.init(cct, sysobj_svc, true, true);
     if (ret < 0) {
       ldout(cct, 0) << __func__ << " failed init zonegroup: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
       return ret;
@@ -461,7 +461,7 @@ int RGWSI_Zone::replace_region_with_zonegroup()
       RGWZoneParams zoneparams(iter->first, iter->first);
       zoneparams.set_id(iter->first);
       zoneparams.realm_id = realm->get_id();
-      ret = zoneparams.init(cct, sysobj_svc.get());
+      ret = zoneparams.init(cct, sysobj_svc);
       if (ret < 0 && ret != -ENOENT) {
         ldout(cct, 0) << __func__ << " failed to init zoneparams  " << iter->first <<  ": " << cpp_strerror(-ret) << dendl;
         return ret;
@@ -511,7 +511,7 @@ int RGWSI_Zone::replace_region_with_zonegroup()
 
   for (auto const& iter : regions) {
     RGWZoneGroup zonegroup(iter);
-    int ret = zonegroup.init(cct, sysobj_svc.get(), true, true);
+    int ret = zonegroup.init(cct, sysobj_svc, true, true);
     if (ret < 0) {
       ldout(cct, 0) << __func__ << " failed init zonegroup" << iter << ": ret "<< ret << " " << cpp_strerror(-ret) << dendl;
       return ret;
@@ -564,7 +564,7 @@ int RGWSI_Zone::init_zg_from_period(bool *initialized)
     return 0;
   }
 
-  int ret = zonegroup->init(cct, sysobj_svc.get());
+  int ret = zonegroup->init(cct, sysobj_svc);
   ldout(cct, 20) << "period zonegroup init ret " << ret << dendl;
   if (ret == -ENOENT) {
     return 0;
@@ -581,19 +581,19 @@ int RGWSI_Zone::init_zg_from_period(bool *initialized)
   if (iter != current_period->get_map().zonegroups.end()) {
     ldout(cct, 20) << "using current period zonegroup " << zonegroup->get_name() << dendl;
     *zonegroup = iter->second;
-    ret = zonegroup->init(cct, sysobj_svc.get(), false);
+    ret = zonegroup->init(cct, sysobj_svc, false);
     if (ret < 0) {
       ldout(cct, 0) << "failed init zonegroup: " << " " << cpp_strerror(-ret) << dendl;
       return ret;
     }
-    ret = zone_params->init(cct, sysobj_svc.get());
+    ret = zone_params->init(cct, sysobj_svc);
     if (ret < 0 && ret != -ENOENT) {
       ldout(cct, 0) << "failed reading zone params info: " << " " << cpp_strerror(-ret) << dendl;
       return ret;
     } if (ret ==-ENOENT && zonegroup->get_name() == default_zonegroup_name) {
       ldout(cct, 10) << " Using default name "<< default_zone_name << dendl;
       zone_params->set_name(default_zone_name);
-      ret = zone_params->init(cct, sysobj_svc.get());
+      ret = zone_params->init(cct, sysobj_svc);
       if (ret < 0 && ret != -ENOENT) {
        ldout(cct, 0) << "failed reading zone params info: " << " " << cpp_strerror(-ret) << dendl;
        return ret;
@@ -620,7 +620,7 @@ int RGWSI_Zone::init_zg_from_period(bool *initialized)
          }
        } else {
          RGWZoneGroup fixed_zg(zg.get_id(),zg.get_name());
-         ret = fixed_zg.init(cct, sysobj_svc.get());
+         ret = fixed_zg.init(cct, sysobj_svc);
          if (ret < 0) {
            ldout(cct, 0) << "error initializing zonegroup : " << cpp_strerror(-ret) << dendl;
            return ret;
@@ -653,7 +653,7 @@ int RGWSI_Zone::init_zg_from_period(bool *initialized)
 
 int RGWSI_Zone::init_zg_from_local(bool *creating_defaults)
 {
-  int ret = zonegroup->init(cct, sysobj_svc.get());
+  int ret = zonegroup->init(cct, sysobj_svc);
   if ( (ret < 0 && ret != -ENOENT) || (ret == -ENOENT && !cct->_conf->rgw_zonegroup.empty())) {
     ldout(cct, 0) << "failed reading zonegroup info: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
     return ret;
@@ -666,7 +666,7 @@ int RGWSI_Zone::init_zg_from_local(bool *creating_defaults)
         << dendl;
       return ret;
     }
-    ret = zonegroup->init(cct, sysobj_svc.get());
+    ret = zonegroup->init(cct, sysobj_svc);
     if (ret < 0) {
       ldout(cct, 0) << "failure in zonegroup create_default: ret "<< ret << " " << cpp_strerror(-ret)
         << dendl;
@@ -736,7 +736,7 @@ int RGWSI_Zone::convert_regionmap()
   for (map<string, RGWZoneGroup>::iterator iter = zonegroupmap.zonegroups.begin();
        iter != zonegroupmap.zonegroups.end(); ++iter) {
     RGWZoneGroup& zonegroup = iter->second;
-    ret = zonegroup.init(cct, sysobj_svc.get(), false);
+    ret = zonegroup.init(cct, sysobj_svc, false);
     ret = zonegroup.update();
     if (ret < 0 && ret != -ENOENT) {
       ldout(cct, 0) << "Error could not update zonegroup " << zonegroup.get_name() << ": " <<
index bc9ffe122362abc36f72bdd3c26e561ac8422210..fd9ec109b91aa696ee67525aedd5b5c21172db35 100644 (file)
@@ -20,11 +20,11 @@ class RGWRESTConn;
 
 class RGWSI_Zone : public RGWServiceInstance
 {
-  friend struct RGWServices_Shared;
+  friend struct RGWServices_Def;
 
-  std::shared_ptr<RGWSI_SysObj> sysobj_svc;
-  std::shared_ptr<RGWSI_RADOS> rados_svc;
-  std::shared_ptr<RGWSI_SyncModules> sync_modules_svc;
+  RGWSI_SysObj *sysobj_svc{nullptr};
+  RGWSI_RADOS *rados_svc{nullptr};
+  RGWSI_SyncModules *sync_modules_svc{nullptr};
 
   RGWRealm *realm{nullptr};
   RGWZoneGroup *zonegroup{nullptr};
@@ -43,9 +43,9 @@ class RGWSI_Zone : public RGWServiceInstance
   map<string, string> zone_id_by_name;
   map<string, RGWZone> zone_by_id;
 
-  void init(std::shared_ptr<RGWSI_SysObj>& _sysobj_svc,
-           std::shared_ptr<RGWSI_RADOS>& _rados_svc,
-           std::shared_ptr<RGWSI_SyncModules>& _sync_modules_svc);
+  void init(RGWSI_SysObj *_sysobj_svc,
+           RGWSI_RADOS *_rados_svc,
+           RGWSI_SyncModules *_sync_modules_svc);
   int do_start() override;
   void shutdown() override;
 
index fda2a0dc22aeb3102fda4a4cb4652d78fc6e3fae..158d2a926850d133f415ec0e0308fb22ed8cbe31 100644 (file)
@@ -10,15 +10,15 @@ class RGWSI_Zone;
 
 class RGWSI_ZoneUtils : public RGWServiceInstance
 {
-  friend struct RGWServices_Shared;
+  friend struct RGWServices_Def;
 
-  std::shared_ptr<RGWSI_RADOS> rados_svc;
-  std::shared_ptr<RGWSI_Zone> zone_svc;
+  RGWSI_RADOS *rados_svc{nullptr};
+  RGWSI_Zone *zone_svc{nullptr};
 
   string trans_id_suffix;
 
-  void init(std::shared_ptr<RGWSI_RADOS>& _rados_svc,
-            std::shared_ptr<RGWSI_Zone>& _zone_svc) {
+  void init(RGWSI_RADOS *_rados_svc,
+            RGWSI_Zone *_zone_svc) {
     rados_svc = _rados_svc;
     zone_svc = _zone_svc;
   }