From: Zengran Zhang Date: Wed, 19 Oct 2016 09:05:27 +0000 (+0800) Subject: rgw multisite: fix the increamtal bucket sync init X-Git-Tag: v11.1.0~567^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=0d928c26408f2fa0b276304c4c00e9c41e0777fa;p=ceph-ci.git rgw multisite: fix the increamtal bucket sync init in the `RGWBucketShardFullSyncCR::operate`, inc_marker will assigned with remote bilog's max_marker. but the sync_status's inc_marker cant be assigned.so the next step inc sync will always sync from null log,which means at beginning log. Fixes: http://tracker.ceph.com/issues/17624 Signed-off-by: Zengran Zhang --- diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index 1cd2e02974c..b25be6103ea 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -1747,13 +1747,14 @@ class RGWInitBucketShardSyncStatusCoroutine : public RGWCoroutine { string lock_name; string cookie; - rgw_bucket_shard_sync_info status; + rgw_bucket_shard_sync_info& status; bucket_index_marker_info info; public: RGWInitBucketShardSyncStatusCoroutine(RGWDataSyncEnv *_sync_env, - const rgw_bucket_shard& bs) - : RGWCoroutine(_sync_env->cct), sync_env(_sync_env), bs(bs) { + const rgw_bucket_shard& bs, + rgw_bucket_shard_sync_info& _status) + : RGWCoroutine(_sync_env->cct), sync_env(_sync_env), bs(bs), status(_status) { store = sync_env->store; lock_name = "sync_lock"; @@ -1814,7 +1815,8 @@ public: RGWCoroutine *RGWRemoteBucketLog::init_sync_status_cr() { - return new RGWInitBucketShardSyncStatusCoroutine(&sync_env, bs); + rgw_bucket_shard_sync_info sync_status; + return new RGWInitBucketShardSyncStatusCoroutine(&sync_env, bs, sync_status); } template @@ -2747,8 +2749,7 @@ int RGWRunBucketSyncCoroutine::operate() yield { if ((rgw_bucket_shard_sync_info::SyncState)sync_status.state == rgw_bucket_shard_sync_info::StateInit) { - call(new RGWInitBucketShardSyncStatusCoroutine(sync_env, bs)); - sync_status.state = rgw_bucket_shard_sync_info::StateFullSync; + call(new RGWInitBucketShardSyncStatusCoroutine(sync_env, bs, sync_status)); } }