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 <smanjara@redhat.com>
(cherry picked from commit
46eef5fb5c06ac1af723cba0e3c3980fb6a431ce)
src_attrs.erase(RGW_ATTR_OLH_VER);
}
+ src_attrs.erase(RGW_ATTR_OBJ_REPLICATION_TRACE);
+ src_attrs.erase(RGW_ATTR_OBJ_REPLICATION_TIMESTAMP);
+ src_attrs.erase(RGW_ATTR_OBJ_REPLICATION_STATUS);
+
set_copy_attrs(src_attrs, attrs, attrs_mod);
attrs.erase(RGW_ATTR_ID_TAG);
attrs.erase(RGW_ATTR_PG_VER);