]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: expose sync managers through RGWRados
authorCasey Bodley <cbodley@redhat.com>
Fri, 22 Jul 2016 03:43:06 +0000 (23:43 -0400)
committerCasey Bodley <cbodley@redhat.com>
Mon, 22 Jan 2018 20:42:12 +0000 (15:42 -0500)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit ccef4b0f59c598eff2afc908f639ccf560782015)

src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h

index 401955a3e647572c00ebbac039947d7be701cb77..a7d77bbd19eb9a14c0b14ec06362d257a152ee8e 100644 (file)
@@ -2996,6 +2996,7 @@ public:
       sync.wakeup(*iter);
     }
   }
+  RGWMetaSyncStatusManager* get_manager() { return &sync; }
 
   int init() {
     int ret = sync.init();
@@ -3039,7 +3040,7 @@ public:
       sync.wakeup(iter->first, iter->second);
     }
   }
-
+  RGWDataSyncStatusManager* get_manager() { return &sync; }
 
   int init() {
     return 0;
@@ -3086,6 +3087,25 @@ void RGWRados::wakeup_data_sync_shards(const string& source_zone, map<int, set<s
   thread->wakeup_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;
index b2e82c6c4dd741cbbfe6ea6deb2206b0e86b2404..281bdab866652595160ab2f08221183bb8303fa0 100644 (file)
@@ -1582,6 +1582,8 @@ public:
 WRITE_CLASS_ENCODER(RGWPeriod)
 
 class RGWDataChangesLog;
+class RGWMetaSyncStatusManager;
+class RGWDataSyncStatusManager;
 class RGWReplicaLogger;
 class RGWCoroutinesManagerRegistry;
   
@@ -2665,6 +2667,9 @@ public:
   void wakeup_meta_sync_shards(set<int>& shard_ids);
   void wakeup_data_sync_shards(const string& source_zone, map<int, set<string> >& 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<rgw_bucket>& buckets, bool enabled);
   int bucket_suspended(rgw_bucket& bucket, bool *suspended);