From a7cc961ae79979369ba3a516bf0a689a8a307a3b Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 5 Oct 2018 13:56:42 -0700 Subject: [PATCH] rgw: svc: hold services in unique_ptr Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_service.cc | 44 +++++++++++----------- src/rgw/rgw_service.h | 27 ++++++++------ src/rgw/services/svc_finisher.h | 2 +- src/rgw/services/svc_notify.h | 14 +++---- src/rgw/services/svc_quota.h | 4 +- src/rgw/services/svc_sys_obj.cc | 2 +- src/rgw/services/svc_sys_obj.h | 12 +++--- src/rgw/services/svc_sys_obj_cache.h | 10 ++--- src/rgw/services/svc_sys_obj_core.cc | 26 ++++++------- src/rgw/services/svc_sys_obj_core.h | 12 +++--- src/rgw/services/svc_zone.cc | 56 ++++++++++++++-------------- src/rgw/services/svc_zone.h | 14 +++---- src/rgw/services/svc_zone_utils.h | 10 ++--- 13 files changed, 119 insertions(+), 114 deletions(-) diff --git a/src/rgw/rgw_service.cc b/src/rgw/rgw_service.cc index a39d2714d04..1c4c04dd70d 100644 --- a/src/rgw/rgw_service.cc +++ b/src/rgw/rgw_service.cc @@ -16,36 +16,38 @@ #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(cct); - notify = std::make_shared(cct); - rados = std::make_shared(cct); - zone = std::make_shared(cct); - zone_utils = std::make_shared(cct); - quota = std::make_shared(cct); - sync_modules = std::make_shared(cct); - sysobj = std::make_shared(cct); - sysobj_core = std::make_shared(cct); + finisher = std::make_unique(cct); + notify = std::make_unique(cct); + rados = std::make_unique(cct); + zone = std::make_unique(cct); + zone_utils = std::make_unique(cct); + quota = std::make_unique(cct); + sync_modules = std::make_unique(cct); + sysobj = std::make_unique(cct); + sysobj_core = std::make_unique(cct); if (have_cache) { - sysobj_cache = std::make_shared(cct); + sysobj_cache = std::make_unique(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(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()); } diff --git a/src/rgw/rgw_service.h b/src/rgw/rgw_service.h index ebb33f39fcc..c698c16ade7 100644 --- a/src/rgw/rgw_service.h +++ b/src/rgw/rgw_service.h @@ -52,18 +52,21 @@ class RGWSI_SysObj; class RGWSI_SysObj_Core; class RGWSI_SysObj_Cache; -struct RGWServices_Shared +struct RGWServices_Def { - std::shared_ptr finisher; - std::shared_ptr notify; - std::shared_ptr rados; - std::shared_ptr zone; - std::shared_ptr zone_utils; - std::shared_ptr quota; - std::shared_ptr sync_modules; - std::shared_ptr sysobj; - std::shared_ptr sysobj_core; - std::shared_ptr sysobj_cache; + std::unique_ptr finisher; + std::unique_ptr notify; + std::unique_ptr rados; + std::unique_ptr zone; + std::unique_ptr zone_utils; + std::unique_ptr quota; + std::unique_ptr sync_modules; + std::unique_ptr sysobj; + std::unique_ptr sysobj_core; + std::unique_ptr 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}; diff --git a/src/rgw/services/svc_finisher.h b/src/rgw/services/svc_finisher.h index 7660ed14cdc..c1ae589e9dc 100644 --- a/src/rgw/services/svc_finisher.h +++ b/src/rgw/services/svc_finisher.h @@ -9,7 +9,7 @@ class Finisher; class RGWSI_Finisher : public RGWServiceInstance { - friend struct RGWServices_Shared; + friend struct RGWServices_Def; public: class ShutdownCB; diff --git a/src/rgw/services/svc_notify.h b/src/rgw/services/svc_notify.h index 2601b8b14f8..3dfbfd3e4ee 100644 --- a/src/rgw/services/svc_notify.h +++ b/src/rgw/services/svc_notify.h @@ -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 zone_svc; - std::shared_ptr rados_svc; - std::shared_ptr 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& _zone_svc, - std::shared_ptr& _rados_svc, - std::shared_ptr& _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; diff --git a/src/rgw/services/svc_quota.h b/src/rgw/services/svc_quota.h index 9e063d7df90..7dfbf19b612 100644 --- a/src/rgw/services/svc_quota.h +++ b/src/rgw/services/svc_quota.h @@ -7,12 +7,12 @@ class RGWSI_Quota : public RGWServiceInstance { - std::shared_ptr zone_svc; + RGWSI_Zone *zone_svc{nullptr}; public: RGWSI_Quota(CephContext *cct): RGWServiceInstance(cct) {} - void init(std::shared_ptr& _zone_svc) { + void init(RGWSI_Zone *_zone_svc) { zone_svc = _zone_svc; } diff --git a/src/rgw/services/svc_sys_obj.cc b/src/rgw/services/svc_sys_obj.cc index 7a6969116dc..588a520acfe 100644 --- a/src/rgw/services/svc_sys_obj.cc +++ b/src/rgw/services/svc_sys_obj.cc @@ -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() diff --git a/src/rgw/services/svc_sys_obj.h b/src/rgw/services/svc_sys_obj.h index 8c3701f52e5..591fe2212df 100644 --- a/src/rgw/services/svc_sys_obj.h +++ b/src/rgw/services/svc_sys_obj.h @@ -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 rados_svc; - std::shared_ptr core_svc; + RGWSI_RADOS *rados_svc{nullptr}; + RGWSI_SysObj_Core *core_svc{nullptr}; - void init(std::shared_ptr& _rados_svc, - std::shared_ptr& _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(); diff --git a/src/rgw/services/svc_sys_obj_cache.h b/src/rgw/services/svc_sys_obj_cache.h index a7d09c48043..98be1c6c50d 100644 --- a/src/rgw/services/svc_sys_obj_cache.h +++ b/src/rgw/services/svc_sys_obj_cache.h @@ -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 notify_svc; + RGWSI_Notify *notify_svc{nullptr}; ObjectCache cache; std::shared_ptr 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& _rados_svc, - std::shared_ptr& _zone_svc, - std::shared_ptr& _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; } diff --git a/src/rgw/services/svc_sys_obj_core.cc b/src/rgw/services/svc_sys_obj_core.cc index 5e0a8eb40e3..f57337b09a7 100644 --- a/src/rgw/services/svc_sys_obj_core.cc +++ b/src/rgw/services/svc_sys_obj_core.cc @@ -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 *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& 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 rados_svc; - std::shared_ptr 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& _rados_svc, - std::shared_ptr& _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; } }; diff --git a/src/rgw/services/svc_zone.cc b/src/rgw/services/svc_zone.cc index 920e81d1c9d..9d00ca19092 100644 --- a/src/rgw/services/svc_zone.cc +++ b/src/rgw/services/svc_zone.cc @@ -17,9 +17,9 @@ RGWSI_Zone::RGWSI_Zone(CephContext *cct) : RGWServiceInstance(cct) { } -void RGWSI_Zone::init(std::shared_ptr& _sysobj_svc, - std::shared_ptr& _rados_svc, - std::shared_ptr& _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& zones) int RGWSI_Zone::list_realms(list& 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& 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::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::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() << ": " << diff --git a/src/rgw/services/svc_zone.h b/src/rgw/services/svc_zone.h index bc9ffe12236..fd9ec109b91 100644 --- a/src/rgw/services/svc_zone.h +++ b/src/rgw/services/svc_zone.h @@ -20,11 +20,11 @@ class RGWRESTConn; class RGWSI_Zone : public RGWServiceInstance { - friend struct RGWServices_Shared; + friend struct RGWServices_Def; - std::shared_ptr sysobj_svc; - std::shared_ptr rados_svc; - std::shared_ptr 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 zone_id_by_name; map zone_by_id; - void init(std::shared_ptr& _sysobj_svc, - std::shared_ptr& _rados_svc, - std::shared_ptr& _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; diff --git a/src/rgw/services/svc_zone_utils.h b/src/rgw/services/svc_zone_utils.h index fda2a0dc22a..158d2a92685 100644 --- a/src/rgw/services/svc_zone_utils.h +++ b/src/rgw/services/svc_zone_utils.h @@ -10,15 +10,15 @@ class RGWSI_Zone; class RGWSI_ZoneUtils : public RGWServiceInstance { - friend struct RGWServices_Shared; + friend struct RGWServices_Def; - std::shared_ptr rados_svc; - std::shared_ptr zone_svc; + RGWSI_RADOS *rados_svc{nullptr}; + RGWSI_Zone *zone_svc{nullptr}; string trans_id_suffix; - void init(std::shared_ptr& _rados_svc, - std::shared_ptr& _zone_svc) { + void init(RGWSI_RADOS *_rados_svc, + RGWSI_Zone *_zone_svc) { rados_svc = _rados_svc; zone_svc = _zone_svc; } -- 2.39.5