1.20.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: configuration files ending in .yml now load as YAML.

  • config: configuration file extensions now ignore case when deciding the file type. E.g., .JSON file load as JSON.

  • config: reduced log level for “Unable to establish new stream” xDS logs to debug. The log level for “gRPC config stream closed” is now reduced to debug when the status is Ok or has been retriable (DeadlineExceeded, ResourceExhausted, or Unavailable) for less than 30 seconds.

  • grpc: gRPC async client can be cached and shared accross filter instances in the same thread, this feature is turned off by default, can be turned on by setting runtime guard envoy.reloadable_features.enable_grpc_async_client_cache to true.

  • http: correct the use of the x-forwarded-proto header and the :scheme header. Where they differ (which is rare) :scheme will now be used for serving redirect URIs and cached content. This behavior can be reverted by setting runtime guard correct_scheme_and_xfp to false.

  • http: set the default lazy headermap threshold to 3, which defines the minimal number of headers in a request/response/trailers required for using a dictionary in addition to the list. Setting the envoy.http.headermap.lazy_map_min_size runtime feature to a non-negative number will override the default value.

  • listener: added the enable_reuse_port field and changed the default for reuse_port from false to true, as the feature is now well supported on the majority of production Linux kernels in use. The default change is aware of hot restart, as otherwise the change would not be backwards compatible between restarts. This means that hot restarting on to a new binary will retain the default of false until the binary undergoes a full restart. To retain the previous behavior, either explicitly set the new configuration field to false, or set the runtime feature flag envoy.reloadable_features.listener_reuse_port_default_enabled to false. As part of this change, the use of reuse_port for TCP listeners on both macOS and Windows has been disabled due to suboptimal behavior. See the field documentation for more information.

Bug Fixes

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

  • access log: fix %UPSTREAM_CLUSTER% when used in http upstream access logs. Previously, it was always logging as an unset value.

  • cluster: delete pools when they’re idle to fix unbounded memory use when using PROXY protocol upstream with tcp_proxy. This behavior can be temporarily reverted by setting the envoy.reloadable_features.conn_pool_delete_when_idle runtime guard to false.

  • xray: fix the AWS X-Ray tracer bug where span’s error, fault and throttle information was not reported properly as per the AWS X-Ray documentation. Before this fix, server error was reported under ‘annotations’ section of the segment data.

Removed Config or Runtime

Normally occurs at the end of the deprecation period

  • http: removed envoy.reloadable_features.http_upstream_wait_connect_response runtime guard and legacy code paths.

  • http: removed envoy.reloadable_features.allow_preconnect runtime guard and legacy code paths.

  • listener: removed envoy.reloadable_features.disable_tls_inspector_injection runtime guard and legacy code paths.

  • ocsp: removed envoy.reloadable_features.check_ocsp_policy deprecation runtime guard and legacy code paths.

New Features