Skip to content

Commit 46eef5f

Browse files
author
Shilpa Jagannath
committed
rgw/multisite: remove source object's RGW_ATTR_OBJ_REPLICATION_TRACE during copy_object.
if a copy_object is executed on a replicated object, it fails to sync the copied object to the original source zone where the source object was first written and replicated from. this is because copy_object retains source attrs by default. when a get_obj() is issued from a fetch_remote_obj() call during sync, we check for this RGW_ATTR_OBJ_REPLICATION_TRACE and if that destination zone is already present in the trace, we return NOT_MODIFIED error, thus failing to replicate the copied object. also remove RGW_ATTR_OBJ_REPLICATION_STATUS and RGW_ATTR_OBJ_REPLICATION_TIMESTAMP Signed-off-by: Shilpa Jagannath <[email protected]>
1 parent 59acb54 commit 46eef5f

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/rgw/driver/rados/rgw_rados.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4724,6 +4724,10 @@ int RGWRados::copy_obj(RGWObjectCtx& obj_ctx,
47244724
src_attrs.erase(RGW_ATTR_OLH_VER);
47254725
}
47264726

4727+
src_attrs.erase(RGW_ATTR_OBJ_REPLICATION_TRACE);
4728+
src_attrs.erase(RGW_ATTR_OBJ_REPLICATION_TIMESTAMP);
4729+
src_attrs.erase(RGW_ATTR_OBJ_REPLICATION_STATUS);
4730+
47274731
set_copy_attrs(src_attrs, attrs, attrs_mod);
47284732
attrs.erase(RGW_ATTR_ID_TAG);
47294733
attrs.erase(RGW_ATTR_PG_VER);

0 commit comments

Comments
 (0)