From 47bbbcbd9e040401771bfff6cdf7a9833feb213e Mon Sep 17 00:00:00 2001 From: "Nikita V. Shirokov" Date: Tue, 5 Oct 2021 17:16:29 +0000 Subject: [PATCH] [compression]: removing enable_compression_without_content_length_header runtime guard Signed-off-by: Nikita V. Shirokov --- docs/root/version_history/current.rst | 2 ++ source/common/runtime/runtime_features.cc | 1 - .../http/compressor/compressor_filter.cc | 28 +++++-------------- .../http/compressor/compressor_filter_test.cc | 22 --------------- 4 files changed, 9 insertions(+), 44 deletions(-) diff --git a/docs/root/version_history/current.rst b/docs/root/version_history/current.rst index 7da20de7be8f5..ffbdba7a92053 100644 --- a/docs/root/version_history/current.rst +++ b/docs/root/version_history/current.rst @@ -17,6 +17,8 @@ Removed Config or Runtime ------------------------- *Normally occurs at the end of the* :ref:`deprecation period ` +* compression: removed ``envoy.reloadable_features.enable_compression_without_content_length_header`` runtime guard and legacy code paths. + New Features ------------ diff --git a/source/common/runtime/runtime_features.cc b/source/common/runtime/runtime_features.cc index 945a5ff1225cd..734b31e59710d 100644 --- a/source/common/runtime/runtime_features.cc +++ b/source/common/runtime/runtime_features.cc @@ -62,7 +62,6 @@ constexpr const char* runtime_features[] = { "envoy.reloadable_features.correct_scheme_and_xfp", "envoy.reloadable_features.disable_tls_inspector_injection", "envoy.reloadable_features.dont_add_content_length_for_bodiless_requests", - "envoy.reloadable_features.enable_compression_without_content_length_header", "envoy.reloadable_features.fix_added_trailers", "envoy.reloadable_features.grpc_bridge_stats_disabled", "envoy.reloadable_features.grpc_web_fix_non_proto_encoded_response_handling", diff --git a/source/extensions/filters/http/compressor/compressor_filter.cc b/source/extensions/filters/http/compressor/compressor_filter.cc index 20462186cc1cd..a5941c2e15d7e 100644 --- a/source/extensions/filters/http/compressor/compressor_filter.cc +++ b/source/extensions/filters/http/compressor/compressor_filter.cc @@ -164,12 +164,8 @@ Http::FilterHeadersStatus CompressorFilter::decodeHeaders(Http::RequestHeaderMap } const auto& request_config = config_->requestDirectionConfig(); - const bool is_not_upgrade = - !Http::Utility::isUpgrade(headers) || - !Runtime::runtimeFeatureEnabled( - "envoy.reloadable_features.enable_compression_without_content_length_header"); - if (!end_stream && request_config.compressionEnabled() && is_not_upgrade && + if (!end_stream && request_config.compressionEnabled() && !Http::Utility::isUpgrade(headers) && request_config.isMinimumContentLength(headers) && request_config.isContentTypeAllowed(headers) && !headers.getInline(request_content_encoding_handle.handle()) && @@ -234,15 +230,11 @@ Http::FilterHeadersStatus CompressorFilter::encodeHeaders(Http::ResponseHeaderMa const auto& config = config_->responseDirectionConfig(); const bool isEnabledAndContentLengthBigEnough = config.compressionEnabled() && config.isMinimumContentLength(headers); - const bool is_not_upgrade = - !Http::Utility::isUpgrade(headers) || - !Runtime::runtimeFeatureEnabled( - "envoy.reloadable_features.enable_compression_without_content_length_header"); - - const bool isCompressible = isEnabledAndContentLengthBigEnough && is_not_upgrade && - config.isContentTypeAllowed(headers) && - !hasCacheControlNoTransform(headers) && isEtagAllowed(headers) && - !headers.getInline(response_content_encoding_handle.handle()); + + const bool isCompressible = + isEnabledAndContentLengthBigEnough && !Http::Utility::isUpgrade(headers) && + config.isContentTypeAllowed(headers) && !hasCacheControlNoTransform(headers) && + isEtagAllowed(headers) && !headers.getInline(response_content_encoding_handle.handle()); if (!end_stream && isEnabledAndContentLengthBigEnough && isAcceptEncodingAllowed(headers) && isCompressible && isTransferEncodingAllowed(headers)) { sanitizeEtagHeader(headers); @@ -520,13 +512,7 @@ bool CompressorFilterConfig::DirectionConfig::isMinimumContentLength( } return is_minimum_content_length; } - if (Runtime::runtimeFeatureEnabled( - "envoy.reloadable_features.enable_compression_without_content_length_header")) { - // return true to ignore the minimum length configuration if no content-length header is present - return true; - } - return StringUtil::caseFindToken(headers.getTransferEncodingValue(), ",", - Http::Headers::get().TransferEncodingValues.Chunked); + return true; } bool CompressorFilter::isTransferEncodingAllowed(Http::RequestOrResponseHeaderMap& headers) const { diff --git a/test/extensions/filters/http/compressor/compressor_filter_test.cc b/test/extensions/filters/http/compressor/compressor_filter_test.cc index cefb918c0f214..c95efec61682b 100644 --- a/test/extensions/filters/http/compressor/compressor_filter_test.cc +++ b/test/extensions/filters/http/compressor/compressor_filter_test.cc @@ -260,28 +260,6 @@ TEST_F(CompressorFilterTest, CompressRequestAndResponseNoContentLength) { doResponseCompression(headers, false); } -TEST_F(CompressorFilterTest, CompressRequestAndResponseNoContentLengthRuntimeDisabled) { - setUpFilter(R"EOF( -{ - "request_direction_config": {}, - "response_direction_config": {}, - "compressor_library": { - "name": "test", - "typed_config": { - "@type": "type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip" - } - } -} -)EOF"); - TestScopedRuntime scoped_runtime; - Runtime::LoaderSingleton::getExisting()->mergeValues( - {{"envoy.reloadable_features.enable_compression_without_content_length_header", "false"}}); - response_stats_prefix_ = "response."; - doRequestNoCompression({{":method", "get"}, {"accept-encoding", "deflate, test"}}); - Http::TestResponseHeaderMapImpl headers{{":status", "200"}}; - doResponseNoCompression(headers); -} - TEST_F(CompressorFilterTest, CompressRequestWithTrailers) { setUpFilter(R"EOF( {