]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add init callback to sync modules
authorYehuda Sadeh <yehuda@redhat.com>
Thu, 16 Mar 2017 21:13:16 +0000 (14:13 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Tue, 30 May 2017 20:18:58 +0000 (13:18 -0700)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_data_sync.cc
src/rgw/rgw_sync_module.h

index b23e306c124b41a552bb7011000e72e55e414665..e305519b432ad3a9c3c528a55a585a97855518a3 100644 (file)
@@ -1432,6 +1432,8 @@ class RGWDataSyncCR : public RGWCoroutine {
   bool *reset_backoff;
 
   RGWDataSyncDebugLogger logger;
+
+  RGWDataSyncModule *data_sync_module{nullptr};
 public:
   RGWDataSyncCR(RGWDataSyncEnv *_sync_env, uint32_t _num_shards, bool *_reset_backoff) : RGWCoroutine(_sync_env->cct),
                                                       sync_env(_sync_env),
@@ -1439,6 +1441,7 @@ public:
                                                       marker_tracker(NULL),
                                                       shard_crs_lock("RGWDataSyncCR::shard_crs_lock"),
                                                       reset_backoff(_reset_backoff), logger(sync_env, "Data", "all") {
+
   }
 
   ~RGWDataSyncCR() override {
@@ -1474,6 +1477,9 @@ public:
       }
 
       if  ((rgw_data_sync_info::SyncState)sync_status.sync_info.state == rgw_data_sync_info::StateBuildingFullSyncMaps) {
+        /* call sync module init here */
+        data_sync_module = sync_env->sync_module->get_data_handler();
+        call(data_sync_module->init_sync(sync_env));
         /* state: building full sync maps */
         ldout(sync_env->cct, 20) << __func__ << "(): building full sync maps" << dendl;
         yield call(new RGWListBucketIndexesCR(sync_env, &sync_status));
index f6f070b1c36f5f148301dd4dbd49ea4159bb60c8..07b30a0201bf65b84b467b456036a4bc3519eb1d 100644 (file)
@@ -16,6 +16,10 @@ public:
   RGWDataSyncModule() {}
   virtual ~RGWDataSyncModule() {}
 
+  virtual RGWCoroutine *init_sync(RGWDataSyncEnv *sync_env) {
+    return nullptr;
+  }
+
   virtual RGWCoroutine *sync_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, uint64_t versioned_epoch, rgw_zone_set *zones_trace) = 0;
   virtual RGWCoroutine *remove_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, real_time& mtime,
                                       bool versioned, uint64_t versioned_epoch, rgw_zone_set *zones_trace) = 0;