Skip to content

V1.72.0

Latest
Compare
Choose a tag to compare
@AgraVator AgraVator released this 17 Apr 05:39
· 23 commits to master since this release

API Changes

  • util: Remove deprecated method GracefulSwitchLb.switchTo() (f207be3). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead
  • xds: Add support for custom per-target credentials on the transport (#11951) (1958e42)
  • xds: Explicitly set request hash key for the ring hash LB policy (892144d)

Bug Fixes

  • core: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819a)
  • xds: Fix cluster selection races when updating config selector (d82613a)
  • otel: Fix span names as per the A72 gRFC changes (#11974) (94f8e93)
  • xds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (#11997) (8681786)

Improvements

  • netty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a)
  • servlet: Set an explicit description for CANCELLED status (#11927) (fca1d3c)
  • xds: gRFC A74 xDS Config Tears implementation in the XdsNameResolver (e80c197). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition
  • core: Log any exception during channel panic because of exception (3961a92). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details
  • util: Graceful switch to new LB when leaving CONNECTING (2e260a4). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE
  • core: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (#11977) (7507a9e)
  • core: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (#11934) (350f90e)
  • rls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (#11931) (c340f4a)
  • xds: avoid unnecessary dns lookup for CIDR addresses (#11932) (602aece)
  • netty: Swap to UniformStreamByteDistributor (#11954) (2f52a00). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113
  • core: Avoid Set.removeAll() when passing a possibly-large List (#11994) (666136b)
  • stub: trailersFromThrowable() metadata should be copied (#11979) (a6e1c1f)

New Features

  • xds: xDS-based HTTP CONNECT configuration (#11861) (1219706)
  • netty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (#11724) (cdab410)

Thanks to

@panchenko
@emmanuel-ferdman
@JoeCqupt