]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix multipart PUT
authorYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 6 Jan 2012 23:07:08 +0000 (15:07 -0800)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Sat, 7 Jan 2012 00:53:22 +0000 (16:53 -0800)
latest revamp broke it, missed calling RGWPutObjProcessor::prepare(s)
where needed.

src/rgw/rgw_op.cc

index 4d591a5248d7a16baf0dc3a9674c89c6802da494..3e5aeb80f2f76f08646000534d674211a2f1da20 100644 (file)
@@ -758,7 +758,7 @@ class RGWPutObjProcessor_Multipart : public RGWPutObjProcessor_Aio
 {
   string oid;
   string part_num;
-  string multipart_meta_obj;
+  RGWMPObj mp;
 protected:
   int prepare(struct req_state *s);
   int complete(string& etag, map<string, bufferlist>& attrs);
@@ -769,11 +769,12 @@ public:
 
 int RGWPutObjProcessor_Multipart::prepare(struct req_state *s)
 {
+  RGWPutObjProcessor::prepare(s);
+
   oid = s->object_str;
   string upload_id;
   url_decode(s->args.get("uploadId"), upload_id);
-  RGWMPObj mp(oid, upload_id);
-  multipart_meta_obj = mp.get_meta();
+  mp.init(oid, upload_id);
 
   url_decode(s->args.get("partNumber"), part_num);
   if (part_num.empty()) {
@@ -802,6 +803,8 @@ int RGWPutObjProcessor_Multipart::complete(string& etag, map<string, bufferlist>
   info.modified = ceph_clock_now(g_ceph_context);
   ::encode(info, bl);
 
+  string multipart_meta_obj = mp.get_meta();
+
   rgw_obj meta_obj(s->bucket, multipart_meta_obj, s->object_str, mp_ns);
 
   r = rgwstore->tmap_set(meta_obj, p, bl);