]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RGW:fix obj by multipart upload cant get tag 66335/head
authorRaja Sharma <raja@ibm.com>
Tue, 21 Jan 2025 09:55:59 +0000 (15:25 +0530)
committerJoseph Mundackal <joseph.j.mundackal@gmail.com>
Thu, 20 Nov 2025 13:26:28 +0000 (08:26 -0500)
Fixes: https://tracker.ceph.com/issues/53016
Signed-off-by: Raja Sharma <raja@ibm.com>
(cherry picked from commit 3e2332db84854838abd8edc9de3b27c676dbf431)

src/rgw/rgw_op.cc
src/rgw/rgw_op.h
src/rgw/rgw_rest_s3.cc

index fa30d97c4cfb2ce9e239732b9592cdf15cbaa77f..2b2c803c2249522e5ccae74ee6a99b20119bdd3e 100644 (file)
@@ -6319,6 +6319,9 @@ void RGWInitMultipart::execute(optional_yield y)
     return;
   }
 
+  encode_obj_tags_attr(obj_tags, attrs);
+  rgw_cond_decode_objtags(s, attrs);
+
   std::unique_ptr<rgw::sal::MultipartUpload> upload;
   upload = s->bucket->get_multipart_upload(s->object->get_name(),
                                       upload_id);
index 30150a5fdf8c103036c79bac01401d7bb80ef6a9..bd26fbfade19fc862da1fa4136800897a1695f3d 100644 (file)
@@ -1841,6 +1841,7 @@ public:
 
 class RGWInitMultipart : public RGWOp {
 protected:
+  RGWObjTags obj_tags;
   std::string upload_id;
   RGWAccessControlPolicy policy;
   ceph::real_time mtime;
index b43fe266050a7b01ef98ad7913b90a5faa99c17e..de8c4e18177787561165b1025e5b244d7b7178ca 100644 (file)
@@ -3980,6 +3980,18 @@ int RGWInitMultipart_ObjStore_S3::get_params(optional_yield y)
   if (ret < 0)
     return ret;
 
+  auto tag_str = s->info.env->get("HTTP_X_AMZ_TAGGING");
+  if(tag_str) {
+    ret = obj_tags.set_from_string(tag_str);
+    if (ret < 0) {
+      ldpp_dout(this, 0) << "setting obj tags failed with " << ret << dendl;
+      if (ret == -ERR_INVALID_TAG) {
+        ret = -EINVAL; // s3 returns only -EINVAL for PUT requests
+      }
+      return ret;
+    }
+  }
+
   //handle object lock
   auto obj_lock_mode_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_MODE");
   auto obj_lock_date_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE");