From: Casey Bodley Date: Fri, 13 Sep 2019 18:44:31 +0000 (-0400) Subject: rgw: disable compression/encryption on Appendable objects X-Git-Tag: v15.1.0~1493^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bf49aff3a12dbeeefc92c579d1fb230deb5cf459;p=ceph.git rgw: disable compression/encryption on Appendable objects Signed-off-by: Casey Bodley --- diff --git a/doc/radosgw/s3/objectops.rst b/doc/radosgw/s3/objectops.rst index fce66becc01f..2ac52607fe31 100644 --- a/doc/radosgw/s3/objectops.rst +++ b/doc/radosgw/s3/objectops.rst @@ -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 ~~~~~~ diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 5099155c9cde..780d75411497 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -3872,20 +3872,23 @@ void RGWPutObj::execute() boost::optional compressor; std::unique_ptr 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());