From f225db7b7e78d5b0b138b72e328336960f21b661 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 7 Jun 2011 14:41:23 -0700 Subject: [PATCH] rgw: remove parts after multi-part upload --- src/rgw/rgw_op.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index ea16cb4df1f34..b860ba8e10f95 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -916,6 +916,7 @@ void RGWCompleteMultipart::execute() map::iterator iter; RGWMultiXMLParser parser; string obj = s->object_str; + string meta_obj; map obj_parts; map::iterator obj_iter; RGWAccessControlPolicy policy; @@ -956,6 +957,7 @@ void RGWCompleteMultipart::execute() obj.append("."); obj.append(upload_id); + meta_obj = obj; prefix = obj; prefix.append("."); @@ -1007,8 +1009,19 @@ void RGWCompleteMultipart::execute() obj.append(buf); rgwstore->clone_range(s->bucket_str, s->object_str, ofs, obj, 0, obj_iter->second.size, s->object_str); ofs += obj_iter->second.size; + } + // now erase all parts + for (obj_iter = obj_parts.begin(); obj_iter != obj_parts.end(); ++obj_iter) { + obj = prefix; + char buf[16]; + snprintf(buf, sizeof(buf), "%d", obj_iter->second.num); + obj.append(buf); + rgwstore->delete_obj(s->user.user_id, s->bucket_str, obj); } + // and also remove the metadata obj + rgwstore->delete_obj(s->user.user_id, s->bucket_str, meta_obj); + done: send_response(); -- 2.39.5