github grpc/grpc-java v1.77.0

6 hours ago

API Changes

  • binder: Remove experimental BinderChannelBuilder.bindAsUser() method, deprecated since 1.69 (#12401) (f96ce06)

Bug Fixes

  • api: Fix name resolver bridge listener handling for address resolution errors for custom name resolvers (#12441) (acbbf86). This fixes regression introduced in v1.68.1 causing a “IllegalStateException: No value present.” exception
  • core: Fix NullPointerException during address update with Happy Eyeballs (5e8af56). This should not impact many people as the code is disabled by default, behind two experimental environment variables
  • okhttp: Fix bidirectional keep-alive causing spurious GOAWAY (6fc3fd0). This fixes the grpc-okhttp server incorrectly closing the connection with GOAWAY: too_many_pings
  • xds: SslContext updates handling when using system root certs (#12340) (63fdaac). Since FileWatcherCertificateProvider isn't used when using system root trust store, the SslContext update for the handshake that depended on it wasn't happening. This fix creates a separate CertificateProvider for handling system root certs that doesn't rely on the FileWatcherCertificateProvider.
  • xds: Make cluster selection interceptor run before other filters (#12381) (82f9b8e). This is needed when there is GcpAuthenticationFilter in the filter chain to make available the cluster resource in CallOptions.
  • xds: Handle wildcards in DNS SAN exact matching (#12345) (5b876cc)
  • android: Fix UdsChannelBuilder with WiFi Proxy (349a35a)
  • binder: Avoid potential deadlock when canceling AsyncSecurityPolicy futures (#12283) (4725ced)
  • binder: Fix a BinderServerTransport crash in the rare shutdown-before-start case (#12440) (91f3f4d)

Improvements

  • Improve status messages by including causal error details in config parsing errors for outlier detection and xds’s wrr locality policies (86e8b56)
  • xds: Detect negative ref count for xds client (21696cd). A negative reference count could cause NullPointerExceptions, so when too many unrefs are detected it produces a SEVERE warning and prevents the reference count from going negative
  • xds: Support deprecated xDS TLS fields for Istio compat (#12435) (53cd1a2). This fixes a regression with Istio introduced in v1.73.0. This gives time for Istio’s new xDS field support to roll out
  • googleapis: Allow wrapping NameResolver to inject XdsClient (#12450) (27d1508). This allows googleapis to inject an xDS bootstrap to use with its channels even if one is already specified in the environment variable or system property. When the code was originally written there was a single global XdsClient, but since gRFC A71 Xds Fallback each target string has its own XdsClient and thus can have its own bootstrap
  • alts: Allow overriding metadata server address with env variable (9ac12ef) (498f717)
  • binder: Let the server know when the client fails to authorize it. (#12445) (599a0a1) This avoids the server needing to wait for the handshake timeout before realizing the handshake failed

New Features

  • opentelemetry: Implement otel retry metrics from gRFC A96 (#12064) (d380191)
  • opentelemetry: propagate baggage to server metrics for custom attributes (#12389) (155308d)
  • xds: Allow EC Keys in SPIFFE Bundle Map parsing (#12399) (559e3ba)
  • xds: Enable authority rewriting (gRFC A81), system root cert support (gRFC A82), GCP authentication filter (gRFC A83), and SNI (gRFC A101) (#12499) (246c2b1). Authority rewriting requires the control plane to be labeled trusted_xds_server in the bootstrap. System root cert support and SNI require using XdsChannelCredentials
  • rls: Add route lookup reason to request whether it is due to a cache miss or stale cache entry (#12442) (795ce02)

Dependencies

  • compiler: C++ protobuf used by codegen upgraded to 26.1 (#12330) (55aefd5)
  • alts: Remove dep on grpclb (b769f96). ALTS is no longer used with grpclb, so this removes dead code
  • Upgrade netty to 4.1.127.Final (b37ee67)

Thanks to

@panchenko
@benjaminp
@HyunSangHan
@becomeStar
@ZachChuba
@oliviamariacodes
@kssumin
@laz-canva

Don't miss a new grpc-java release

NewReleases is sending notifications on new releases.