From cfbd5807ddf70932970c0dcd1324b4024cfbe4d9 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 31 Mar 2020 09:22:48 -0400 Subject: [PATCH] rgw: incremental bucket sync status stores timestamp Signed-off-by: Casey Bodley --- src/rgw/rgw_data_sync.cc | 3 ++- src/rgw/rgw_data_sync.h | 17 ++++++++--------- src/rgw/rgw_json_enc.cc | 2 ++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index 64c6710d9bf..e11e7419d34 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -3408,11 +3408,12 @@ public: RGWCoroutine *store_marker(const string& new_marker, uint64_t index_pos, const real_time& timestamp) override { sync_marker.position = new_marker; + sync_marker.timestamp = timestamp; map attrs; sync_marker.encode_attr(attrs); - tn->log(20, SSTR("updating marker marker_oid=" << marker_oid << " marker=" << new_marker)); + tn->log(20, SSTR("updating marker marker_oid=" << marker_oid << " marker=" << new_marker << " timestamp=" << timestamp)); return new RGWSimpleRadosWriteAttrsCR(sync_env->async_rados, sync_env->svc->sysobj, rgw_raw_obj(sync_env->svc->zone->get_zone_params().log_pool, marker_oid), diff --git a/src/rgw/rgw_data_sync.h b/src/rgw/rgw_data_sync.h index 9a2174bed5c..2d472ba784f 100644 --- a/src/rgw/rgw_data_sync.h +++ b/src/rgw/rgw_data_sync.h @@ -474,29 +474,28 @@ WRITE_CLASS_ENCODER(rgw_bucket_shard_full_sync_marker) struct rgw_bucket_shard_inc_sync_marker { string position; - - rgw_bucket_shard_inc_sync_marker() {} + ceph::real_time timestamp; void encode_attr(map& attrs); void encode(bufferlist& bl) const { - ENCODE_START(1, 1, bl); + ENCODE_START(2, 1, bl); encode(position, bl); + encode(timestamp, bl); ENCODE_FINISH(bl); } void decode(bufferlist::const_iterator& bl) { - DECODE_START(1, bl); + DECODE_START(2, bl); decode(position, bl); - DECODE_FINISH(bl); + if (struct_v >= 2) { + decode(timestamp, bl); + } + DECODE_FINISH(bl); } void dump(Formatter *f) const; void decode_json(JSONObj *obj); - - bool operator<(const rgw_bucket_shard_inc_sync_marker& m) const { - return (position < m.position); - } }; WRITE_CLASS_ENCODER(rgw_bucket_shard_inc_sync_marker) diff --git a/src/rgw/rgw_json_enc.cc b/src/rgw/rgw_json_enc.cc index 8083212e33b..ff5996b9bfa 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -1768,11 +1768,13 @@ void rgw_bucket_shard_full_sync_marker::dump(Formatter *f) const void rgw_bucket_shard_inc_sync_marker::decode_json(JSONObj *obj) { JSONDecoder::decode_json("position", position, obj); + JSONDecoder::decode_json("timestamp", timestamp, obj); } void rgw_bucket_shard_inc_sync_marker::dump(Formatter *f) const { encode_json("position", position, f); + encode_json("timestamp", timestamp, f); } void rgw_bucket_shard_sync_info::decode_json(JSONObj *obj) -- 2.39.5