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

Behavior Changes

   - compiler: Default to @generated=omit (f8700a1
   
<https://github.com/grpc/grpc-java/commit/f8700a13ad1b7624cc370081164bb161a6d89112>).
   This omits javax.annotation.Generated from the generated code and makes
   the org.apache.tomcat:annotations-api compile-only dependency
   unnecessary (README and examples changes forthcoming; we delayed those
   changes until the release landed). You can use the option
   @generated=javax for the previous behavior, but please also file an
   issue so we can develop alternatives
   - compiler: generate blocking v2 unary calls that throw StatusException (
   #12126 <https://github.com/grpc/grpc-java/pull/12126>) (a16d655
   
<https://github.com/grpc/grpc-java/commit/a16d6559194d1598197d210a8aa9593e336128b1>).
   Previously, the new blocking stub API was identical to the older blocking
   stub for unary RPCs and used the unchecked StatusRuntimeException.
   However, feedback demonstrated it was confusing to mix that with the
   checked StatusException in BlockingClientCall. Now the new blocking stub
   uses StatusException throughout. grpc-java continues to support the old
   generated code, but the version of protoc-gen-grpc-java will dictate which
   API you see. If you support multiple generated code versions, you can use
   the older blocking v1 stub for unary RPCs

Bug Fixes

   - netty: Fix a race that caused RPCs to hang on start when a GOAWAY was
   received while the RPCs’ headers were being written to the OS (b04c673
   
<https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6>
   , 15c7573
   
<https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8>).
   This was a very old race, not a recent regression. All streams should now
   properly fail instead of hanging, although in some cases they may be
   transparently retried
   - util: OutlierDetection should use nanoTime, not currentTimeMillis (
   #12110 <https://github.com/grpc/grpc-java/pull/12110>) (1c43098
   
<https://github.com/grpc/grpc-java/commit/1c430989902856e609ddbff203be1dc4c412ff43>).
   Previously, changes in the wall time would impact its accounting
   - xds: Don't allow hostnames in address field in EDS (#12123
   <https://github.com/grpc/grpc-java/pull/12123>) (482dc5c
   
<https://github.com/grpc/grpc-java/commit/482dc5c1c3c7ff94f96d1d2d7edc1fe3b166630e>).
   Only IP addresses were handled properly, and only IP addresses should be
   handled per gRFC A27
   - xds: In resource handling, call onError() for RDS and EDS NACKs (#12122
   <https://github.com/grpc/grpc-java/pull/12122>) (efe9ccc
   
<https://github.com/grpc/grpc-java/commit/efe9ccc22caf88dfa1746e8edb840748e00cbaa4>).
   Previously the resource was NACKed, but gRPC would continue waiting for the
   resource until a timeout was reached and claim the control plane didn’t
   send the resource. Now it will fail quickly with an informative error
   - xds: Implement equals in RingHashConfig (a5eaa66
   
<https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f>).
   Previously all configuration refreshes were considered a new config, which
   had the potential for causing unexpected inefficiency problems. This was
   noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled,
   so there are no known problems that this caused
   - LBs should avoid calling LBs after lb.shutdown() (1df2a33
   
<https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0>).
   This fixed pick_first and ring_hash behavior that could cause rare and
   “random” races in parent load balancers like a NullPointerException in
   ClusterImplLoadBalancer.createSubchannel(), which had a ring_hash child.
   This is most likely to help xDS, as it heavily uses hierarchical LB policies

Improvements

   - util: Deliver addresses in a random order to shuffle connection
   creation ordering (f07eb47
   
<https://github.com/grpc/grpc-java/commit/f07eb47cac4713feef6711078b827c6082971533>).
   Previously, connections were created in-order (but non-blocking), so in a
   fast network the first address could be more likely to connect first given
   a "microsecond" headstart. That first connection then receives all the
   buffered RPCs, which could cause temporary, but repeated, load imbalances
   of the same backend when all clients receive the same list of addresses in
   the same order. This has been seen in practice, but it is unclear how often
   it happens. Shuffling has the potential to improve load distribution of new
   clients when using round_robin, weighted_round_robin, and least_request,
   which connect simultaneously to multiple addresses
   - core: Use lazy message formatting in checkState (#12144
   <https://github.com/grpc/grpc-java/pull/12144>) (26bd0ee
   
<https://github.com/grpc/grpc-java/commit/26bd0eee4705e4ddac0e351fded5a8bd4e49f863>).
   This avoids the potential of unnecessarily formatting an exception as a
   string when a subchannel fails to connect
   - bazel: Migrate java_grpc_library to use DefaultInfo (#12148
   <https://github.com/grpc/grpc-java/pull/12148>) (6f69363
   
<https://github.com/grpc/grpc-java/commit/6f69363d90a9ae7471c40044a711be007029c59b>).
   This adds compatibility for
   --incompatible_disable_target_default_provider_fields
   - binder: Rationalize @ThreadSafe-ty inside BinderTransport (#12130
   <https://github.com/grpc/grpc-java/pull/12130>) (c206428
   
<https://github.com/grpc/grpc-java/commit/c20642874957778a9ca622a364f70250e65863f0>
   )
   - binder: Cancel checkAuthorization() request if still pending upon
   termination (#12167 <https://github.com/grpc/grpc-java/pull/12167>) (
   30d40a6
   
<https://github.com/grpc/grpc-java/commit/30d40a6179c514ab88e8892d9aec4ced0763f60b>
   )

Dependencies

   - compiler: Upgrade Protobuf C++ to 22.5 (#11961
   <https://github.com/grpc/grpc-java/pull/11961>) (46485c8
   
<https://github.com/grpc/grpc-java/commit/46485c8b62778f1b581019ef19e67dd8de937ca3>).
   This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central.
   This should have no visible benefit, but gets us closer to upgrading to
   Protobuf 27 which added edition 2023 support
   - release: Migrate artifacts publishing changed from legacy OSSRH to
   Central Portal (#12156 <https://github.com/grpc/grpc-java/pull/12156>) (
   f99b2aa
   
<https://github.com/grpc/grpc-java/commit/f99b2aaef884da0fbe4ade56df98c8a037e974a3>).
   We aren’t aware of any visible changes to the results on Maven Central

-- 
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%2B4M1oOEcR7D3gCe3dv81bYt1UvngA-5HQAYiNo7JZb6kH-guQ%40mail.gmail.com.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to