From: Casey Bodley Date: Fri, 1 Jun 2018 13:17:36 +0000 (-0400) Subject: rgw: bucket sync only provides an epoch for olh operations X-Git-Tag: v12.2.9~85^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1cd62d67a2ebb91776239d11ed5d29849512b96b;p=ceph.git rgw: bucket sync only provides an epoch for olh operations Signed-off-by: Casey Bodley (cherry picked from commit 2de295c2cf88212ecdf536ee491ac0ecb6de9f65) Conflicts: src/rgw/rgw_data_sync.cc - luminous uses ldout instead of tn->log - use boost::optional instead of std::optional --- diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index fdee38ac43d2..4bbbcd9b379d 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -2407,7 +2407,7 @@ class RGWBucketSyncSingleEntryCR : public RGWCoroutine { rgw_obj_key key; bool versioned; - uint64_t versioned_epoch; + boost::optional versioned_epoch; rgw_bucket_entry_owner owner; real_time timestamp; RGWModifyOp op; @@ -2432,7 +2432,8 @@ public: RGWBucketSyncSingleEntryCR(RGWDataSyncEnv *_sync_env, RGWBucketInfo *_bucket_info, const rgw_bucket_shard& bs, - const rgw_obj_key& _key, bool _versioned, uint64_t _versioned_epoch, + const rgw_obj_key& _key, bool _versioned, + boost::optional _versioned_epoch, real_time& _timestamp, const rgw_bucket_entry_owner& _owner, RGWModifyOp _op, RGWPendingState _op_state, @@ -2447,7 +2448,7 @@ public: marker_tracker(_marker_tracker), sync_status(0){ stringstream ss; - ss << bucket_shard_str{bs} << "/" << key << "[" << versioned_epoch << "]"; + ss << bucket_shard_str{bs} << "/" << key << "[" << versioned_epoch.value_or(0) << "]"; set_description() << "bucket sync single entry (source_zone=" << sync_env->source_zone << ") b=" << ss.str() << " log_entry=" << entry_marker << " op=" << (int)op << " op_state=" << (int)op_state; ldout(sync_env->cct, 20) << "bucket sync single entry (source_zone=" << sync_env->source_zone << ") b=" << ss.str() << " log_entry=" << entry_marker << " op=" << (int)op << " op_state=" << (int)op_state << dendl; set_status("init"); @@ -2484,7 +2485,7 @@ public: } else if (op == CLS_RGW_OP_ADD || op == CLS_RGW_OP_LINK_OLH) { set_status("syncing obj"); - ldout(sync_env->cct, 5) << "bucket sync: sync obj: " << sync_env->source_zone << "/" << bucket_info->bucket << "/" << key << "[" << versioned_epoch << "]" << dendl; + ldout(sync_env->cct, 5) << "bucket sync: sync obj: " << sync_env->source_zone << "/" << bucket_info->bucket << "/" << key << "[" << versioned_epoch.value_or(0) << "]" << dendl; logger.log("fetch"); call(data_sync_module->sync_object(sync_env, *bucket_info, key, versioned_epoch, &zones_trace)); } else if (op == CLS_RGW_OP_DEL || op == CLS_RGW_OP_UNLINK_INSTANCE) { @@ -2493,12 +2494,12 @@ public: versioned = true; } logger.log("remove"); - call(data_sync_module->remove_object(sync_env, *bucket_info, key, timestamp, versioned, versioned_epoch, &zones_trace)); + call(data_sync_module->remove_object(sync_env, *bucket_info, key, timestamp, versioned, versioned_epoch.value_or(0), &zones_trace)); } else if (op == CLS_RGW_OP_LINK_OLH_DM) { logger.log("creating delete marker"); set_status("creating delete marker"); - ldout(sync_env->cct, 10) << "creating delete marker: obj: " << sync_env->source_zone << "/" << bucket_info->bucket << "/" << key << "[" << versioned_epoch << "]" << dendl; - call(data_sync_module->create_delete_marker(sync_env, *bucket_info, key, timestamp, owner, versioned, versioned_epoch, &zones_trace)); + ldout(sync_env->cct, 10) << "creating delete marker: obj: " << sync_env->source_zone << "/" << bucket_info->bucket << "/" << key << "[" << versioned_epoch.value_or(0) << "]" << dendl; + call(data_sync_module->create_delete_marker(sync_env, *bucket_info, key, timestamp, owner, versioned, versioned_epoch.value_or(0), &zones_trace)); } } } while (marker_tracker->need_retry(key)); @@ -2889,7 +2890,7 @@ int RGWBucketShardIncrementalSyncCR::operate() if (!marker_tracker.start(cur_id, 0, entry->timestamp)) { ldout(sync_env->cct, 0) << "ERROR: cannot start syncing " << cur_id << ". Duplicate entry?" << dendl; } else { - uint64_t versioned_epoch = 0; + boost::optional versioned_epoch; rgw_bucket_entry_owner owner(entry->owner, entry->owner_display_name); if (entry->ver.pool < 0) { versioned_epoch = entry->ver.epoch;