Skip to content

Latest commit

 

History

History
166 lines (154 loc) · 23 KB

current.rst

File metadata and controls

166 lines (154 loc) · 23 KB

1.22.0 (pending)

Incompatible Behavior Changes

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

Minor Behavior Changes

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

  • access_log: log all header values in the grpc access log.
  • build: VERSION and API_VERSION have been renamed to VERSION.txt and API_VERSION.txt respectively to avoid conflicts with the C++ <version> header.
  • config: type URL is used to lookup extensions regardless of the name field. This may cause problems for empty filter configurations or mis-matched protobuf as the typed configurations. This behavioral change can be temporarily reverted by setting runtime guard envoy.reloadable_features.no_extension_lookup_by_name to false.
  • config: warning messages for protobuf unknown fields now contain ancestors for easier troubleshooting.
  • cryptomb: remove RSA PKCS1 v1.5 padding support.
  • decompressor: decompressor does not duplicate accept-encoding header values anymore. This behavioral change can be reverted by setting runtime guard envoy.reloadable_features.append_to_accept_content_encoding_only_once to false.
  • dynamic_forward_proxy: if a DNS resolution fails, failing immediately with a specific resolution error, rather than finishing up all local filters and failing to select an upstream host.
  • ecds: changed to use http_filter stat prefix as the metrics root for ECDS subscriptions. This behavior can be temporarily reverted by setting envoy.reloadable_features.top_level_ecds_stats to false.
  • ext_authz: added requested server name in ext_authz network filter for auth review.
  • ext_authz: forward :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>` selected by :ref:`typed_metadata_context_namespaces <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.typed_metadata_context_namespaces>` to external auth service.
  • file: changed disk based files to truncate files which are not being appended to. This behavioral change can be temporarily reverted by setting runtime guard envoy.reloadable_features.append_or_truncate to false.
  • grpc: flip runtime guard envoy.reloadable_features.enable_grpc_async_client_cache to be default enabled. async grpc client created through getOrCreateRawAsyncClient will be cached by default.
  • health_checker: exposing initial_metadata to GrpcHealthCheck in a way similar to request_headers_to_add of HttpHealthCheck.
  • http: avoiding delay-close for HTTP/1.0 responses framed by connection: close as well as HTTP/1.1 if the request is fully read. This means for responses to such requests, the FIN will be sent immediately after the response. This behavior can be temporarily reverted by setting envoy.reloadable_features.skip_delay_close to false. If clients are are seen to be receiving sporadic partial responses and flipping this flag fixes it, please notify the project immediately.
  • http: changed the http status code to 504 from 408 if the request timeouts after the request is completed. This behavior can be temporarily reverted by setting the runtime guard envoy.reloadable_features.override_request_timeout_by_gateway_timeout to false.
  • http: lazy disable downstream connection reading in the HTTP/1 codec to reduce unnecessary system calls. This behavioral change can be temporarily reverted by setting runtime guard envoy.reloadable_features.http1_lazy_read_disable to false.
  • http: now the max concurrent streams of http2 connection can not only be adjusted down according to the SETTINGS frame but also can be adjusted up, of course, it can not exceed the configured upper bounds. This fix is guarded by envoy.reloadable_features.http2_allow_capacity_increase_by_settings.
  • http: respecting content-type in :ref:`headers_to_add <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ResponseMapper.headers_to_add>` even when the response body is modified. This behavioral change can be temporarily reverted by setting runtime guard envoy.reloadable_features.allow_adding_content_type_in_local_replies to false.
  • http: when writing custom filters, injectEncodedDataToFilterChain and injectDecodedDataToFilterChain now trigger sending of headers if they were not yet sent due to StopIteration. Previously, calling one of the inject functions in that state would trigger an assertion. See issue #19891 for more details.
  • http: when writing custom filters, injectEncodedDataToFilterChain and injectDecodedDataToFilterChain now trigger sending of headers if they were not yet sent due to StopIteration. Previously, calling one of the inject functions in that state would trigger an assertion. See issue #19891 for more details.
  • listener: the :ref:`ipv4_compat <envoy_api_field_core.SocketAddress.ipv4_compat>` flag can only be set on Ipv6 address and Ipv4-mapped Ipv6 address. A runtime guard is added envoy.reloadable_features.strict_check_on_ipv4_compat and the default is true.
  • network: add a new ConnectionEvent ConnectedZeroRtt which may be raised by QUIC connections to allow early data to be sent before the handshake finishes. This event is ignored at callsites which is only reachable for TCP connections in the Envoy core code. Any extensions which depend on ConnectionEvent enum value should audit their usage of it to make sure this new event is handled appropriately.
  • oauth2: disable chunked transfer encoding in the token request to be compatible with Azure AD (login.microsoftonline.com).
  • perf: ssl contexts are now tracked without scan based garbage collection and greatly improved the performance on secret update.
  • ratelimit: the :ref:`header_value_match <envoy_v3_api_msg_config.route.v3.ratelimit.action.HeaderValueMatch>` support custom descriptor_key.
  • router: record upstream request timeouts for all the cases and not just for those requests which are awaiting headers. This behavioral change can be temporarily reverted by setting runtime guard envoy.reloadable_features.do_not_await_headers_on_upstream_timeout_to_emit_stats to false.
  • runtime: deprecated runtime flags set via configuration files or xDS will now ENVOY_BUG, rather than silently resulting in unexpected behavior on the data plane by no longer applying removed code paths.
  • runtime: removed global runtime as Envoy default. This behavioral change can be reverted by setting runtime guard envoy.restart_features.no_runtime_singleton to false.
  • sip-proxy: add customized affinity support by adding :ref:`tra_service_config <envoy_v3_api_msg_extensions.filters.network.sip_proxy.tra.v3alpha.TraServiceConfig>` and :ref:`customized_affinity <envoy_v3_api_msg_extensions.filters.network.sip_proxy.v3alpha.CustomizedAffinity>`.
  • sip-proxy: add support for the 503 response code. When there is something wrong occurred, send 503 Service Unavailable back to downstream.
  • stateful session http filter: only enable cookie based session state when request path matches the configured cookie path.
  • tracing: set tracing error tag for grpc non-ok response code only when it is a upstream error. Client error will not be tagged as a grpc error. This fix is guarded by envoy.reloadable_features.update_grpc_response_error_tag.

Bug Fixes

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

  • access_log: fix memory leak when reopening an access log fails. Access logs will now try to be reopened on each subsequent flush attempt after a failure.
  • data plane: fix crash when internal redirect selects a route configured with direct response or redirect actions.
  • data plane: fixing error handling where writing to a socket failed while under the stack of processing. This should genreally affect HTTP/3. This behavioral change can be reverted by setting envoy.reloadable_features.allow_upstream_inline_write to false.
  • eds: fix the eds cluster update by allowing update on the locality of the cluster endpoints. This behavioral change can be temporarily reverted by setting runtime guard envoy.reloadable_features.support_locality_update_on_eds_cluster_endpoints to false.
  • hot restart: fixed a bug where an incorrect fd was passed to child when a tcp listener and a udp listener listen to the same address because socket type was not used to find the matching listener for a url.
  • http: fixed a bug where %RESPONSE_CODE_DETAILS% was not set correctly in :ref:`request_headers_to_add <envoy_v3_api_field_config.route.v3.RouteConfiguration.request_headers_to_add>`.
  • http: fixed a bug where 100-continue comparison in the Expect request header field was case sensitive. This RFC compliant behavior can be temporarily reverted by setting runtime guard envoy.reloadable_features.http_100_continue_case_insensitive to false.
  • jwt_authn: fixed a bug where a JWT with empty "iss" is passed even the field :ref:`issuer <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.issuer>` is specified. If the "issuer" field is specified, "iss" in the JWT should match it.
  • jwt_authn: fixed the crash when a CONNECT request is sent to JWT filter configured with regex match on the Host header.
  • router: fixed mirror policy :ref:`runtime_fraction <envoy_v3_api_field_config.route.v3.RouteAction.RequestMirrorPolicy.runtime_fraction>` to correctly allow reading from a fractional percent value stored in runtime in all cases. Previously it would only do this if the default numerator was above 0, otherwise it would use the integer variant with a default of 0. The default of 0 is retained, but runtime lookup will happen in all cases and recognize a stored fractional percent.
  • tcp_proxy: fix a crash that occurs when configured for :ref:`upstream tunneling <envoy_v3_api_field_extensions.filters.network.tcp_proxy.v3.TcpProxy.tunneling_config>` and the downstream connection disconnects while the the upstream connection or http/2 stream is still being established.
  • tls: fix a bug while matching a certificate SAN with an exact value in match_typed_subject_alt_names of a listener where wildcard * character is not the only character of the dns label. Example, baz*.example.net and *baz.example.net and b*z.example.net will match baz1.example.net and foobaz.example.net and buzz.example.net, respectively.
  • upstream: cluster slow start config add min_weight_percent field to avoid too big EDF deadline which cause slow start endpoints receiving no traffic, default 10%. This fix is releted to issue#19526.
  • upstream: fix stack overflow when a cluster with large number of idle connections is removed.
  • xds: fix a crash that occurs when Envoy receives a discovery response without control_plane field.
  • xray: fix the AWS X-Ray tracer extension to not sample the trace if sampled= keyword is not present in the header x-amzn-trace-id.
  • xray: fix the AWS X-Ray tracer extension to annotate a child span with type=subsegment to correctly relate subsegments to a parent segment. Previously a subsegment would be treated as an independent segment.
  • xray: fix the AWS X-Ray tracer extension to reuse the trace ID already present in the header x-amzn-trace-id instead of creating a new one.
  • xray: fix the AWS X-Ray tracer extension to set the HTTP X-Forwarded-For header value as client_ip in the segment data.

Removed Config or Runtime

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

  • access_log: removed envoy.reloadable_features.unquote_log_string_values and legacy code paths.
  • grpc_bridge_filter: removed envoy.reloadable_features.grpc_bridge_stats_disabled and legacy code paths.
  • http: removed envoy.reloadable_features.hash_multiple_header_values and legacy code paths.
  • http: removed envoy.reloadable_features.no_chunked_encoding_header_for_304 and legacy code paths.
  • http: removed envoy.reloadable_features.preserve_downstream_scheme and legacy code paths.
  • http: removed envoy.reloadable_features.require_strict_1xx_and_204_response_headers and envoy.reloadable_features.send_strict_1xx_and_204_response_headers and legacy code paths.
  • http: removed envoy.reloadable_features.strip_port_from_connect and legacy code paths.
  • http: removed envoy.reloadable_features.use_observable_cluster_name and legacy code paths.
  • http: removed envoy.reloadable_features.http_transport_failure_reason_in_body and legacy code paths.
  • http: removed envoy.reloadable_features.allow_response_for_timeout and legacy code paths.
  • http: removed envoy.reloadable_features.http2_consume_stream_refused_errors and legacy code paths.
  • http: removed envoy.reloadable_features.internal_redirects_with_body and legacy code paths.
  • json: removed envoy.reloadable_features.remove_legacy_json and legacy code paths.
  • listener: removed envoy.reloadable_features.listener_reuse_port_default_enabled and legacy code paths.
  • listener: removed envoy.reloadable_features.listener_wildcard_match_ip_family and legacy code paths.
  • udp: removed envoy.reloadable_features.udp_per_event_loop_read_limit and legacy code paths.
  • upstream: removed envoy.reloadable_features.health_check.graceful_goaway_handling and legacy code paths.
  • xds: removed envoy.reloadable_features.vhds_heartbeats and legacy code paths.

New Features

Deprecated