]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: disable compression/encryption on Appendable objects 29909/head
authorCasey Bodley <cbodley@redhat.com>
Fri, 13 Sep 2019 18:44:31 +0000 (14:44 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 13 Sep 2019 18:49:46 +0000 (14:49 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
doc/radosgw/s3/objectops.rst
src/rgw/rgw_op.cc

index fce66becc01f8c29da14a74f0c5949d4e23ff2f1..2ac52607fe31522871d4fc3dd05b5ec761e28dbc 100644 (file)
@@ -411,6 +411,7 @@ It is used to upload files in appending mode. The type of the objects created by
 operation is Appendable Object, and the type of the objects uploaded with the Put Object operation is Normal Object.
 **Append Object can't be used if bucket versioning is enabled or suspended.**
 **Synced object will become normal in multisite, but you can still append to the original object.**
+**Compression and encryption features are disabled for Appendable objects.**
 
 Syntax
 ~~~~~~
index 5099155c9cde80dbc3db0dc0610de2354fbb8214..780d754114974e53824ab12e2e36986f75f30bdd 100644 (file)
@@ -3872,20 +3872,23 @@ void RGWPutObj::execute()
   boost::optional<RGWPutObj_Compress> compressor;
 
   std::unique_ptr<DataProcessor> encrypt;
-  op_ret = get_encrypt_filter(&encrypt, filter);
-  if (op_ret < 0) {
-    return;
-  }
-  if (encrypt != nullptr) {
-    filter = &*encrypt;
-  } else if (compression_type != "none") {
-    plugin = get_compressor_plugin(s, compression_type);
-    if (!plugin) {
-      ldpp_dout(this, 1) << "Cannot load plugin for compression type "
-          << compression_type << dendl;
-    } else {
-      compressor.emplace(s->cct, plugin, filter);
-      filter = &*compressor;
+
+  if (!append) { // compression and encryption only apply to full object uploads
+    op_ret = get_encrypt_filter(&encrypt, filter);
+    if (op_ret < 0) {
+      return;
+    }
+    if (encrypt != nullptr) {
+      filter = &*encrypt;
+    } else if (compression_type != "none") {
+      plugin = get_compressor_plugin(s, compression_type);
+      if (!plugin) {
+        ldpp_dout(this, 1) << "Cannot load plugin for compression type "
+            << compression_type << dendl;
+      } else {
+        compressor.emplace(s->cct, plugin, filter);
+        filter = &*compressor;
+      }
     }
   }
   tracepoint(rgw_op, before_data_transfer, s->req_id.c_str());