1.21.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

  • config: the log message for “gRPC config stream closed” now uses the most recent error message, and reports seconds instead of milliseconds for how long the most recent status has been received.

  • dns: now respecting the returned DNS TTL for resolved hosts, rather than always relying on the hard-coded dns_refresh_rate. This behavior can be temporarily reverted by setting the runtime guard envoy.reloadable_features.use_dns_ttl to false.

  • listener: destroy per network filter chain stats when a network filter chain is removed during the listener in place update.

Bug Fixes

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

  • listener: fixed the crash when updating listeners that do not bind to port.

  • thrift_proxy: fix the thrift_proxy connection manager to correctly report success/error response metrics when performing payload passthrough.

Removed Config or Runtime

Normally occurs at the end of the deprecation period

  • compression: removed envoy.reloadable_features.enable_compression_without_content_length_header runtime guard and legacy code paths.

  • health check: removed envoy.reloadable_features.health_check.immediate_failure_exclude_from_cluster runtime guard and legacy code paths.

  • http: removed envoy.reloadable_features.add_and_validate_scheme_header and legacy code paths.

  • http: removed envoy.reloadable_features.check_unsupported_typed_per_filter_config, Envoy will always check unsupported typed per filter config if the filter isn’t optional.

  • http: removed envoy.reloadable_features.dont_add_content_length_for_bodiless_requests deprecation and legacy code paths.

  • http: removed envoy.reloadable_features.http2_skip_encoding_empty_trailers and legacy code paths. Envoy will always encode empty trailers by sending empty data with end_stream true (instead of sending empty trailers) for HTTP/2.

  • http: removed envoy.reloadable_features.improved_stream_limit_handling and legacy code paths.

  • http: removed envoy.reloadable_features.remove_forked_chromium_url and legacy code paths.

  • http: removed envoy.reloadable_features.return_502_for_upstream_protocol_errors. Envoy will always return 502 code upon encountering upstream protocol error.

  • http: removed envoy.reloadable_features.treat_host_like_authority and legacy code paths.

  • http: removed envoy.reloadable_features.treat_upstream_connect_timeout_as_connect_failure and legacy code paths.

  • upstream: removed envoy.reloadable_features.upstream_host_weight_change_causes_rebuild and legacy code paths.

New Features

  • api: added support for xds.type.v3.TypedStruct in addition to the now-deprecated udpa.type.v1.TypedStruct proto message, which is a wrapper proto used to encode typed JSON data in a google.protobuf.Any field.

  • bootstrap: added typed_dns_resolver_config in the bootstrap to support DNS resolver as an extension.

  • cluster: added typed_dns_resolver_config in the cluster to support DNS resolver as an extension.

  • config: added environment_variable to the DataSource.

  • dns_cache: added typed_dns_resolver_config in the dns_cache to support DNS resolver as an extension.

  • dns_filter: added typed_dns_resolver_config in the dns_filter to support DNS resolver as an extension.

  • dns_resolver: added CaresDnsResolverConfig to support c-ares DNS resolver as an extension.

  • dns_resolver: added AppleDnsResolverConfig to support apple DNS resolver as an extension.

  • ext_authz: added query_parameters_to_set and query_parameters_to_remove for adding and removing query string parameters when using a gRPC authorization server.

  • http: added support for retriable health check status codes.

  • oauth filter: added cookie_names to allow overriding (default) cookie names (BearerToken, OauthHMAC, and OauthExpires) set by the filter.

  • thrift_proxy: add upstream response zone metrics in the form cluster.cluster_name.zone.local_zone.upstream_zone.thrift.upstream_resp_success.

  • thrift_proxy: add upstream metrics to show decoding errors and whether exception is from local or remote, e.g. cluster.cluster_name.thrift.upstream_resp_exception_remote.

  • thrift_proxy: add host level success/error metrics where success is a reply of type success and error is any other response to a call.

  • thrift_proxy: support subset lb when using request or route metadata.

  • udp: add support for multiple listener filters.

  • upstream: added the ability to configure max connection duration for upstream clusters.

  • vcl_socket_interface: added VCL socket interface extension for fd.io VPP integration to contrib images. This can be enabled via VCL configuration.

  • xds: re-introduced unified delta and sotw xDS multiplexers that share most of the implementation. Added a new runtime config envoy.reloadable_features.unified_mux (disabled by default) that when enabled, switches xDS to use unified multiplexers.