diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 5d7fc74..aedfe03 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -4849,6 +4849,15 @@ void RGWCompleteMultipart::execute() op_ret = -ERR_INVALID_PART; return; } else { + // mp.get_part() always produce the oid like .. + // However, it is not always true after bd8e026f88b812cc70caf6232c247844df5d99bf is merged + // https://github.com/ceph/ceph/commit/bd8e026f88b812cc70caf6232c247844df5d99bf + // When a part is uploaded more than once, the oid may be like + // .. + const RGWObjManifest::obj_iterator& obj_iter = obj_part.manifest.obj_begin(); + const string adjusted_oid = const_cast(obj_iter).get_location().get_orig_obj(); + src_obj.init_ns(s->bucket, adjusted_oid, mp_ns); + manifest.append(obj_part.manifest); }