From: Casey Bodley Date: Fri, 22 Jul 2016 03:43:06 +0000 (-0400) Subject: rgw: expose sync managers through RGWRados X-Git-Tag: v11.0.1~24^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ccef4b0f59c598eff2afc908f639ccf560782015;p=ceph.git rgw: expose sync managers through RGWRados Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index b38ff7cdb0e3..f05b0a139cb1 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -2960,6 +2960,7 @@ public: sync.wakeup(*iter); } } + RGWMetaSyncStatusManager* get_manager() { return &sync; } int init() { int ret = sync.init(); @@ -3003,7 +3004,7 @@ public: sync.wakeup(iter->first, iter->second); } } - + RGWDataSyncStatusManager* get_manager() { return &sync; } int init() { return 0; @@ -3050,6 +3051,25 @@ void RGWRados::wakeup_data_sync_shards(const string& source_zone, mapwakeup_sync_shards(shard_ids); } +RGWMetaSyncStatusManager* RGWRados::get_meta_sync_manager() +{ + Mutex::Locker l(meta_sync_thread_lock); + if (meta_sync_processor_thread) { + return meta_sync_processor_thread->get_manager(); + } + return nullptr; +} + +RGWDataSyncStatusManager* RGWRados::get_data_sync_manager(const std::string& source_zone) +{ + Mutex::Locker l(data_sync_thread_lock); + auto thread = data_sync_processor_threads.find(source_zone); + if (thread == data_sync_processor_threads.end()) { + return nullptr; + } + return thread->second->get_manager(); +} + int RGWRados::get_required_alignment(rgw_bucket& bucket, uint64_t *alignment) { IoCtx ioctx; diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index 5b8d2ec50278..91eab4bedf50 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -1516,6 +1516,8 @@ public: WRITE_CLASS_ENCODER(RGWPeriod) class RGWDataChangesLog; +class RGWMetaSyncStatusManager; +class RGWDataSyncStatusManager; class RGWReplicaLogger; class RGWCoroutinesManagerRegistry; @@ -2586,6 +2588,9 @@ public: void wakeup_meta_sync_shards(set& shard_ids); void wakeup_data_sync_shards(const string& source_zone, map >& shard_ids); + RGWMetaSyncStatusManager* get_meta_sync_manager(); + RGWDataSyncStatusManager* get_data_sync_manager(const std::string& source_zone); + int set_bucket_owner(rgw_bucket& bucket, ACLOwner& owner); int set_buckets_enabled(std::vector& buckets, bool enabled); int bucket_suspended(rgw_bucket& bucket, bool *suspended);