Skip to content

Latest commit

 

History

History
181 lines (169 loc) · 24.4 KB

current.rst

File metadata and controls

181 lines (169 loc) · 24.4 KB

1.18.0 (Pending)

Incompatible Behavior Changes

Changes that are expected to cause an incompatibility if applicable; deployment changes are likely required

  • config: the v2 xDS API is no longer supported by the Envoy binary.
  • grpc_stats: the default value for :ref:`stats_for_all_methods <envoy_v3_api_field_extensions.filters.http.grpc_stats.v3.FilterConfig.stats_for_all_methods>` is switched from true to false, in order to avoid possible memory exhaustion due to an untrusted downstream sending a large number of unique method names. The previous default value was deprecated in version 1.14.0. This only changes the behavior when the value is not set. The previous behavior can be used by setting the value to true. This behavior change by be overridden by setting runtime feature envoy.deprecated_features.grpc_stats_filter_enable_stats_for_all_methods_by_default.
  • http: fixing a standards compliance issue with :scheme. The :scheme header sent upstream is now based on the original URL scheme, rather than set based on the security of the upstream connection. This behavior can be temporarily reverted by setting envoy.reloadable_features.preserve_downstream_scheme to false.
  • http: http3 is now enabled/disabled via build option --define http3=disabled rather than the extension framework. Behavior is the same, but builds may be affected for platforms or build configurations where http3 is not supported.
  • http: resolving inconsistencies between :scheme and X-Forwarded-Proto. :scheme will now be set for all HTTP/1.1 requests. This changes the behavior of the gRPC access logger, Wasm filters, CSRF filter and oath2 filter for HTTP/1 traffic, where :scheme was previously not set. This change also validates that for front-line Envoys (Envoys configured with :ref:`xff_num_trusted_hops <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.xff_num_trusted_hops>` set to 0 and :ref:`use_remote_address <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.use_remote_address>` set to true) that HTTP/1.1 https schemed requests can not be sent over non-TLS connections. All behavioral changes listed here can be temporarily reverted by setting envoy.reloadable_features.add_and_validate_scheme_header to false.
  • http: when a protocol error is detected in response from upstream, Envoy sends 502 BadGateway downstream and access log entry contains UPE flag. This behavior change can be overwritten to use error code 503 by setting envoy.reloadable_features.return_502_for_upstream_protocol_errors to false.

Minor Behavior Changes

Changes that may cause incompatibilities for some users, but should not for most

Bug Fixes

Changes expected to improve the state of the world and are unlikely to have negative effects

  • active http health checks: properly handles HTTP/2 GOAWAY frames from the upstream. Previously a GOAWAY frame due to a graceful listener drain could cause improper failed health checks due to streams being refused by the upstream on a connection that is going away. To revert to old GOAWAY handling behavior, set the runtime feature envoy.reloadable_features.health_check.graceful_goaway_handling to false.
  • adaptive concurrency: fixed a bug where concurrent requests on different worker threads could update minRTT back-to-back.
  • buffer: tighten network connection read and write buffer high watermarks in preparation to more careful enforcement of read limits. Buffer high-watermark is now set to the exact configured value; previously it was set to value + 1.
  • cdn_loop: check that the entirety of the :ref:`cdn_id <envoy_v3_api_field_extensions.filters.http.cdn_loop.v3alpha.CdnLoopConfig.cdn_id>` field is a valid CDN identifier.
  • cds: fix blocking the update for a warming cluster when the update is the same as the active version.
  • ext_authz: emit :ref:`CheckResponse.dynamic_metadata <envoy_v3_api_field_service.auth.v3.CheckResponse.dynamic_metadata>` when the external authorization response has "Denied" check status.
  • fault injection: stop counting as active fault after delay elapsed. Previously fault injection filter continues to count the injected delay as an active fault even after it has elapsed. This produces incorrect output statistics and impacts the max number of consecutive faults allowed (e.g., for long-lived streams). This change decreases the active fault count when the delay fault is the only active and has gone finished.
  • filter_chain: fix filter chain matching with the server name as the case-insensitive way.
  • grpc-web: fix local reply and non-proto-encoded gRPC response handling for small response bodies. This fix can be temporarily reverted by setting envoy.reloadable_features.grpc_web_fix_non_proto_encoded_response_handling to false.
  • grpc_http_bridge: the downstream HTTP status is now correctly set for trailers-only responses from the upstream.
  • header map: pick the right delimiter to append multiple header values to the same key. Previouly header with multiple values are coalesced with ",", after this fix cookie headers should be coalesced with " ;". This doesn't affect Http1 or Http2 requests because these 2 codecs coalesce cookie headers before adding it to header map. To revert to the old behavior, set the runtime feature envoy.reloadable_features.header_map_correctly_coalesce_cookies to false.
  • http: avoid grpc-status overwrite on Http::Utility::sendLocalReply() if that field has already been set.
  • http: disallowing "host:" in request_headers_to_add for behavioral consistency with rejecting :authority header. This behavior can be temporarily reverted by setting envoy.reloadable_features.treat_host_like_authority to false.
  • http: fixed an issue where Enovy did not handle peer stream limits correctly, and queued streams in nghttp2 rather than establish new connections. This behavior can be temporarily reverted by setting envoy.reloadable_features.improved_stream_limit_handling to false.
  • http: fixed a bug where setting :ref:`MaxStreamDuration proto <envoy_v3_api_msg_config.route.v3.RouteAction.MaxStreamDuration>` did not disable legacy timeout defaults.
  • http: reverting a behavioral change where upstream connect timeouts were temporarily treated differently from other connection failures. The change back to the original behavior can be temporarily reverted by setting envoy.reloadable_features.treat_upstream_connect_timeout_as_connect_failure to false.
  • jwt_authn: reject requests with a proper error if JWT has the wrong issuer when allow_missing is used. Before this change, the requests are accepted.
  • listener: prevent crashing when an unknown listener config proto is received and debug logging is enabled.
  • mysql_filter: improve the codec ability of mysql filter at connection phase, it can now decode MySQL5.7+ connection phase protocol packet.
  • overload: fix a bug that can cause use-after-free when one scaled timer disables another one with the same duration.
  • sni: as the server name in sni should be case-insensitive, envoy will convert the server name as lower case first before any other process inside envoy.
  • tls: fix the subject alternative name of the presented certificate matches the specified matchers as the case-insensitive way when it uses DNS name.
  • tls: fix issue where OCSP was inadvertently removed from SSL response in multi-context scenarios.
  • upstream: fix handling of moving endpoints between priorities when active health checks are enabled. Previously moving to a higher numbered priority was a NOOP, and moving to a lower numbered priority caused an abort.
  • upstream: retry budgets will now set default values for xDS configurations.
  • zipkin: fix 'verbose' mode to emit annotations for stream events. This was the documented behavior, but wasn't behaving as documented.

Removed Config or Runtime

Normally occurs at the end of the :ref:`deprecation period <deprecated>`

  • access_logs: removed legacy unbounded access logs and runtime guard envoy.reloadable_features.disallow_unbounded_access_logs.
  • dns: removed legacy buggy wildcard matching path and runtime guard envoy.reloadable_features.fix_wildcard_matching.
  • dynamic_forward_proxy: removed envoy.reloadable_features.enable_dns_cache_circuit_breakers and legacy code path.
  • 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.
  • http: removed legacy date header overwriting logic and runtime guard envoy.reloadable_features.preserve_upstream_date deprecation.
  • http: removed legacy ALPN handling and runtime guard envoy.reloadable_features.http_default_alpn.
  • listener: removed legacy runtime guard envoy.reloadable_features.listener_in_place_filterchain_update.
  • router: removed envoy.reloadable_features.consume_all_retry_headers and legacy code path.
  • router: removed envoy.reloadable_features.preserve_query_string_in_path_redirects and legacy code path.

New Features

Deprecated