The v1.82.0 grpc-java release
<https://github.com/grpc/grpc-java/releases/tag/v1.82.0> is now available

This release drops support for Bazel 7. It may still run, but we are no
longer testing it. We are testing Bazel 8 and 9.

We are anticipating requiring Netty 4.2 in the next release. Please file an
issue if you still need Netty 4.1 support.
Behavior Changes

   - xds: Disable Priority LB child policy retention cache (#12806
   <https://github.com/grpc/grpc-java/pull/12806>). Previously, when a
   priority became inactive, its associated child load balancer was kept in a
   deactivated state for potential reuse. Now, inactive child balancers are
   immediately torn down and removed.
   - xds: skip DiscoveryRequest for unsubscribed types on stream ready (
   #12782 <https://github.com/grpc/grpc-java/pull/12782>). When the
   bootstrap declares more than one xDS server (e.g. a default server for
   LDS/CDS plus an authority-specific EDS-only server), grpc-java was sending
   CDS/LDS DiscoveryRequests to the EDS-only server too. That server replies
   UNIMPLEMENTED, which tears down the stream and EDS data never arrives.
   This fix makes it skip DiscoveryRequests for resource types we don't
   actually subscribe to on a given server.

Improvements

   - Remove JSR-305 @ThreadSafe annotation and replace with JavaDoc (#12762
   <https://github.com/grpc/grpc-java/pull/12762>). Removes JSR-305
   annotations but instead of replacing it with ErrorProne's ThreadSafe,
   sticks to adding a JavaDoc comment. This is done only in public non-final
   classes and interfaces. This allows Java applications that have moved away
   from javax to compile and avoids a bug in Immutables and Lombok (and
   possibly other annotation processors) from failing when JSR-305 is not
   present.
   - core: Reduce per-stream idle memory on the server by 0.5 KB (b38df6c
   
<https://github.com/grpc/grpc-java/commit/b38df6c9446d7c9f9448382e68960b0448f8dc68>).
   The main improvement here is not retaining the request Metadata for the
   life of the RPC. That means RPCs with larger request Metadata would see a
   larger benefit.
   - core: Clarify missing content-type on HTTP error responses (#12720
   <https://github.com/grpc/grpc-java/pull/12720>). Adjusts the diagnostic
   for the missing rather than invalid content-type, in the Status description.
   - core: throw IOException when ProxySelector returns null or empty list (
   #12793 <https://github.com/grpc/grpc-java/pull/12793>).
   ProxySelector.select(URI) is required to return a non-null, non-empty list.
   Some implementations violate this, which previously caused an opaque crash
   in ProxyDetectorImpl. Now it detects this case explicitly and fails
   gracefully, naming the offending ProxySelector class to help with debugging.
   - okhttp: enable TLS 1.3 by default for Android clients, retain TLS
   1.2-only for desktop JVM (f430131
   
<https://github.com/grpc/grpc-java/commit/f43013161b3ccf04cc7409b927d0851d5a246582>
   )
   - xds: Reduce per-endpoint memory from CDS LB (cc0d1a8
   
<https://github.com/grpc/grpc-java/commit/cc0d1a810b58095bc835acaad703a758f3e0040b>).
   This is most noticeable when there are many endpoints returned by EDS, but
   the LB policy only uses a few of them, like pick_first.
   - xds: pre-parse custom metric names in WRR load balancer (#12773
   <https://github.com/grpc/grpc-java/pull/12773>) (324fce7
   
<https://github.com/grpc/grpc-java/commit/324fce7154eb7e09e02e3b492826245336f22095>).
   This reduces the per-RPC overhead of the gRFC A114 support added in v1.81.0
   - xds: Propagate status cause through XdsDepManager (13b4b97
   
<https://github.com/grpc/grpc-java/commit/13b4b97272aee6a5484252beaa8438e5c4dad0d7>).
   This preserves more information for failures communicating with the control
   plane.
   - binder: Give clear error when message is larger than parcel (d92ca44
   
<https://github.com/grpc/grpc-java/commit/d92ca44a16bc904e729a2ef218bd1965de9679d0>
   )

Bug Fixes

   - xds: Trust Manager fix for certain scenarios where SAN validation
   shouldn't use the SNI sent (#12775
   <https://github.com/grpc/grpc-java/pull/12775>) (bb153a8
   
<https://github.com/grpc/grpc-java/commit/bb153a83f01230a0823f69a24dddf238b3f4502a>
   ).
   - core: Cancel DelayedClientCall when application listener throws (#12761
   <https://github.com/grpc/grpc-java/pull/12761>). Align
   DelayedClientCall.DelayedListener with ClientCallImpl's existing behavior
   for listener exceptions. When the application listener throws from
   onHeaders/onMessage/onReady, catch the Throwable, cancel the call with
   CANCELLED (cause = the throwable), and swallow subsequent callbacks.
   Previously, a throw from the application listener escaped to the
   callExecutor's uncaught-exception handler. The real call was not cancelled
   and the transport kept delivering callbacks to an already broken listener
   - core,opentelemetry: Fix server metric labels on early close (#12774
   <https://github.com/grpc/grpc-java/pull/12774>). Addresses the
   server-side OpenTelemetry metric labeling bug where a generated method can
   be recorded as grpc.method="other" if streamClosed() happens before
   serverCallStarted().
   - core: Fix pick_first NPE with
   GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST=true when accepting resolved
   addresses and in CONNECTING state (#12814
   <https://github.com/grpc/grpc-java/pull/12814>). It makes sure that
   whenever PickFirstLeafLoadBalancer transitions into CONNECTING the current
   address in the addressIndex has a corresponding subchannel. This prevents
   an NPE in acceptResolvedAddresses in some situations.
   - okhttp: HPACK should fail on varint overflow (ec10992
   
<https://github.com/grpc/grpc-java/commit/ec1099254e85cb065d43ad42db2637f8b821a257>).
   This should have no visible impact in normal use. It mostly just makes it
   easier to debug broken implementations
   - xds: When using the file watcher certificate provider, reload cert/key
   even if only one of them changes (f4125c5
   
<https://github.com/grpc/grpc-java/commit/f4125c591fd452b005820ee30274b88f1e7c2a4d>
   )
   - compiler: Avoid compile error on weird proto file names (f021bef
   
<https://github.com/grpc/grpc-java/commit/f021befcd50843e09762bb4cfa3be46a68ddb34e>
   )

New Features

   - googleapis: support ?force-xds query parameter in the google-c2p resolver
   (#12760 <https://github.com/grpc/grpc-java/pull/12760>) (86fa860
   
<https://github.com/grpc/grpc-java/commit/86fa86063b9a7f3965a0401506b0f8616463c73d>).
   This disables environment checks and uses xDS unconditionally. Please note
   that this feature has not yet seen comprehensive testing.

Dependencies

   - Upgrade Netty to 4.1.133 (ada087b
   
<https://github.com/grpc/grpc-java/commit/ada087b9dc67dbbbd92ef7fed6d93fe2f1802170>
   )
   - bazel: Upgrade googleapis proto repo to commit 1dbb1a14 (ec0a9c9
   
<https://github.com/grpc/grpc-java/commit/ec0a9c976537680a7e7afd87a8d59d9baa4ac912>).
   This fixed a rules_go incompatibility issue with Bazel 9.1. But it also
   greatly reduced the overall transitive dependencies, as the C++ grpc repo
   is no longer a dependency
   - bazel: Upgrade workflows to Bazel 8 (039ad77
   
<https://github.com/grpc/grpc-java/commit/039ad77797fb92f64c4b41e0c1569efb45492f30>)
   add Bazel 9.1.0 to our CI matrix (17be0d3
   
<https://github.com/grpc/grpc-java/commit/17be0d3d1bcf2e51bc26ce081bdd5c0f5aac82bb>
   )
   - protoc-gen-grpc-java: Linux binaries are now built with Ubuntu 20.04
   instead of 18.04 (8802dc3
   
<https://github.com/grpc/grpc-java/commit/8802dc35b5c4d17cc8a53986db4f98bec9a2e04f>
   , da98b04
   
<https://github.com/grpc/grpc-java/commit/da98b04b09f4a0bfde5263d2f51c0a4f1860f5fc>
   )

Thanks to

@becomeStar <https://github.com/becomeStar>
@bengtsson1-flir <https://github.com/bengtsson1-flir>
@jnowjack-lucidchart <https://github.com/jnowjack-lucidchart>
@Kainsin <https://github.com/Kainsin>
@kenkangxgwe <https://github.com/kenkangxgwe>
@mfperminov <https://github.com/mfperminov>
@paulmurhy123 <https://github.com/paulmurhy123>
@schiemon <https://github.com/schiemon>
@therepanic <https://github.com/therepanic>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/grpc-io/CA%2B4M1oOG6D8Kd17bgcEHUprB2hcAvV4zg5ShYmXWW18gU2b%3DMA%40mail.gmail.com.

Reply via email to