Skip to content
1 change: 1 addition & 0 deletions docs/root/version_history/current.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ Removed Config or Runtime
* http: removed legacy connection close behavior and runtime guard `envoy.reloadable_features.fixed_connection_close`.
* http: removed legacy HTTP/1.1 error reporting path and runtime guard `envoy.reloadable_features.early_errors_via_hcm`.
* http: removed legacy sanitization path for upgrade response headers and runtime guard `envoy.reloadable_features.fix_upgrade_response`.
* router: removed `envoy.reloadable_features.consume_all_retry_headers` and legacy code path.

New Features
------------
Expand Down
1 change: 0 additions & 1 deletion source/common/router/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,6 @@ envoy_cc_library(
"//source/common/http:header_utility_lib",
"//source/common/http:headers_lib",
"//source/common/http:utility_lib",
"//source/common/runtime:runtime_features_lib",
"@envoy_api//envoy/config/route/v3:pkg_cc_proto",
],
)
Expand Down
11 changes: 4 additions & 7 deletions source/common/router/retry_state_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
#include "common/http/codes.h"
#include "common/http/headers.h"
#include "common/http/utility.h"
#include "common/runtime/runtime_features.h"

namespace Envoy {
namespace Router {
Expand Down Expand Up @@ -52,12 +51,10 @@ RetryStatePtr RetryStateImpl::create(const RetryPolicy& route_policy,
request_headers.removeEnvoyRetryOn();
request_headers.removeEnvoyRetryGrpcOn();
request_headers.removeEnvoyMaxRetries();
if (Runtime::runtimeFeatureEnabled("envoy.reloadable_features.consume_all_retry_headers")) {
request_headers.removeEnvoyHedgeOnPerTryTimeout();
request_headers.removeEnvoyRetriableHeaderNames();
request_headers.removeEnvoyRetriableStatusCodes();
request_headers.removeEnvoyUpstreamRequestPerTryTimeoutMs();
}
request_headers.removeEnvoyHedgeOnPerTryTimeout();
request_headers.removeEnvoyRetriableHeaderNames();
request_headers.removeEnvoyRetriableStatusCodes();
request_headers.removeEnvoyUpstreamRequestPerTryTimeoutMs();

return ret;
}
Expand Down
1 change: 0 additions & 1 deletion source/common/runtime/runtime_features.cc
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ constexpr const char* runtime_features[] = {
"envoy.reloadable_features.allow_preconnect",
"envoy.reloadable_features.allow_response_for_timeout",
"envoy.reloadable_features.always_nodelay",
"envoy.reloadable_features.consume_all_retry_headers",
"envoy.reloadable_features.check_ocsp_policy",
"envoy.reloadable_features.disable_tls_inspector_injection",
"envoy.reloadable_features.fix_wildcard_matching",
Expand Down
52 changes: 0 additions & 52 deletions test/common/router/retry_state_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1319,58 +1319,6 @@ TEST_F(RouterRetryStateImplTest, RemoveAllRetryHeaders) {
EXPECT_FALSE(request_headers.has("x-envoy-hedge-on-per-try-timeout"));
EXPECT_FALSE(request_headers.has("x-envoy-upstream-rq-per-try-timeout-ms"));
}

// Repeat policy is enabled case with runtime flag disabled.
{
TestScopedRuntime scoped_runtime;
Runtime::LoaderSingleton::getExisting()->mergeValues(
{{"envoy.reloadable_features.consume_all_retry_headers", "false"}});

Http::TestRequestHeaderMapImpl request_headers{
{"x-envoy-retry-on", "5xx,retriable-header-names,retriable-status-codes"},
{"x-envoy-retry-grpc-on", "resource-exhausted"},
{"x-envoy-retriable-header-names", "X-Upstream-Pushback"},
{"x-envoy-retriable-status-codes", "418,420"},
{"x-envoy-max-retries", "7"},
{"x-envoy-hedge-on-per-try-timeout", "true"},
{"x-envoy-upstream-rq-per-try-timeout-ms", "2"},
};
setup(request_headers);
EXPECT_TRUE(state_->enabled());

EXPECT_FALSE(request_headers.has("x-envoy-retry-on"));
EXPECT_FALSE(request_headers.has("x-envoy-retry-grpc-on"));
EXPECT_FALSE(request_headers.has("x-envoy-max-retries"));
EXPECT_TRUE(request_headers.has("x-envoy-retriable-header-names"));
EXPECT_TRUE(request_headers.has("x-envoy-retriable-status-codes"));
EXPECT_TRUE(request_headers.has("x-envoy-hedge-on-per-try-timeout"));
EXPECT_TRUE(request_headers.has("x-envoy-upstream-rq-per-try-timeout-ms"));
}

// Repeat policy is disabled case with runtime flag disabled.
{
TestScopedRuntime scoped_runtime;
Runtime::LoaderSingleton::getExisting()->mergeValues(
{{"envoy.reloadable_features.consume_all_retry_headers", "false"}});

Http::TestRequestHeaderMapImpl request_headers{
{"x-envoy-retriable-header-names", "X-Upstream-Pushback"},
{"x-envoy-retriable-status-codes", "418,420"},
{"x-envoy-max-retries", "7"},
{"x-envoy-hedge-on-per-try-timeout", "true"},
{"x-envoy-upstream-rq-per-try-timeout-ms", "2"},
};
setup(request_headers);
EXPECT_EQ(nullptr, state_);

EXPECT_FALSE(request_headers.has("x-envoy-retry-on"));
EXPECT_FALSE(request_headers.has("x-envoy-retry-grpc-on"));
EXPECT_FALSE(request_headers.has("x-envoy-max-retries"));
EXPECT_TRUE(request_headers.has("x-envoy-retriable-header-names"));
EXPECT_TRUE(request_headers.has("x-envoy-retriable-status-codes"));
EXPECT_TRUE(request_headers.has("x-envoy-hedge-on-per-try-timeout"));
EXPECT_TRUE(request_headers.has("x-envoy-upstream-rq-per-try-timeout-ms"));
}
}

} // namespace
Expand Down