]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
RGW:fix obj by multipart upload cant get tag 61465/head
authorRaja Sharma <raja@ibm.com>
Tue, 21 Jan 2025 09:55:59 +0000 (15:25 +0530)
committerRaja Sharma <raja@ibm.com>
Fri, 24 Jan 2025 17:41:31 +0000 (23:11 +0530)
Fixes: https://tracker.ceph.com/issues/53016
Signed-off-by: Raja Sharma <raja@ibm.com>
src/rgw/rgw_op.cc
src/rgw/rgw_op.h
src/rgw/rgw_rest_s3.cc

index d6f846b0d2f7cde472e8f50b99ed0ef8667eb974..0095395237c9627d818f1e2c8e3ec8bbde3c3da4 100644 (file)
@@ -6649,6 +6649,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 dcf64c31572e04973d10c25cc4f41eede2d957e8..cbe441c140bfdf5883812ad6964108a7e367026f 100644 (file)
@@ -1904,6 +1904,7 @@ public:
 
 class RGWInitMultipart : public RGWOp {
 protected:
+  RGWObjTags obj_tags;
   std::string upload_id;
   RGWAccessControlPolicy policy;
   ceph::real_time mtime;
index 885991244a61be0ca10a5f61ba0e486af2a78c14..2e806125365a9a7b1ce86b6c64a0c6e25f7fd596 100644 (file)
@@ -4334,6 +4334,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");