The v1.64.0 release <https://github.com/grpc/grpc-java/releases/tag/v1.64.0> of gRPC-Java is now available!
API Changes - compiler: the option jakarta_omit was renamed @generated=omit (#11086 <https://github.com/grpc/grpc-java/pull/11086>) (8a21afc <https://github.com/grpc/grpc-java/commit/8a21afcc9e07ec1c50408c17c2c1415976ccbc71> ) New Features - New API LoadBalancer.getChannelTarget() (4561bb5 <https://github.com/grpc/grpc-java/commit/4561bb5b804ca242e0dd4047d8d2744c3eb9920f> ) - opentelemetry: Publish new module grpc-opentelemetry (5ba1a55 <https://github.com/grpc/grpc-java/commit/5ba1a556374deb588601265f5d160056e238627e>). The feature is still missing documentation and an example. It only supports metrics; tracing and logs will be future enhancements. See gRFC A66 <https://github.com/grpc/proposal/blob/master/A66-otel-stats.md> - bazel: Add support for bzlmod (#11046 <https://github.com/grpc/grpc-java/pull/11046>) (d1890c0 <https://github.com/grpc/grpc-java/commit/d1890c0accd5d66f1576480dbe60d57011cdd903> ) - bazel: Replace usages of the old compatibility maven targets with @maven targets (0064991 <https://github.com/grpc/grpc-java/commit/00649913b0e27ec813ffb54b9cf1ca2ead21cc2c> ) - okhttp: Support serverBuilder.maxConcurrentCallsPerConnection (Fixes #11062 <https://github.com/grpc/grpc-java/issues/11062>). (#11063 <https://github.com/grpc/grpc-java/pull/11063>) (8050723 <https://github.com/grpc/grpc-java/commit/80507233975185b377079934aaedda9acbf5174a> ) - xds: Experimental metrics recording in WRR LB (06df25b <https://github.com/grpc/grpc-java/commit/06df25b65dd9351a6aa8c330b8753d8c814b30ff> , 35a171b <https://github.com/grpc/grpc-java/commit/35a171bc1d544241dd983deee9f407ebddddbc4a> , 2897b39 <https://github.com/grpc/grpc-java/commit/2897b39390460bae02d2c7a58b2b56f0c5d23944>), to be exported by grpc-opentelemetry if explicitly enabled in GrpcOpenTelemetry. See gRFC A78 <https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md> - rls: Experimental metrics recording in RLS LB (a9fb272 <https://github.com/grpc/grpc-java/commit/a9fb272b784180305c6ec3de77e21359752ac5b6> , a1d1932 <https://github.com/grpc/grpc-java/commit/a1d19327febde9c26fff8f59f7825ffe15dda4c7> , 8133318 <https://github.com/grpc/grpc-java/commit/8133318376ae222ca162da91316b36beea1b5277>), to be exported by grpc-opentelemetry if explicitly enabled in GrpcOpenTelemetry Improvements - examples: support bazel build for retry policy example (58de563 <https://github.com/grpc/grpc-java/commit/58de563fa480ccc225efdd97d694f44ffa377e7e> ) - netty: Allow deframer errors to close stream with a status code, as long as headers have not yet been sent (e036b1b <https://github.com/grpc/grpc-java/commit/e036b1b198bfa2eb5fbdd27fc02a5df95ecd939b>). This will greatly improve the debuggability of certain server errors in particular cases. Instead of the client seeing “CANCELLED: RST_STREAM closed stream. HTTP/2 error code: CANCEL”, they could see “RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 4194304: 6144592” - netty: Improve handling of unexpected write queue promise failures ( #11016 <https://github.com/grpc/grpc-java/pull/11016>) - servlet: Avoid unnecessary FINEST hex string conversion by checking log level. Fixes #11031 <https://github.com/grpc/grpc-java/issues/11031>. (f7ee5f3 <https://github.com/grpc/grpc-java/commit/f7ee5f3182dddde775069155d17ed93f7270f1ca> ) - StatusException/StatusRuntimeException hide stack trace in a simpler way (#11064 <https://github.com/grpc/grpc-java/pull/11064>) (e36f099 <https://github.com/grpc/grpc-java/commit/e36f099be9a09e8db09832a49a49ac8f3f423fce> ) - util: Status desc for outlier detection ejection (#11036 <https://github.com/grpc/grpc-java/pull/11036>) (10cb4a3 <https://github.com/grpc/grpc-java/commit/10cb4a3bed4631d4991a2dcbb263c53a6dc607c8> ) - binder: Helper class to allow in process servers to use peer uids in test (#11014 <https://github.com/grpc/grpc-java/pull/11014>) (537dbe8 <https://github.com/grpc/grpc-java/commit/537dbe826a15386c0523851ff0ec5cb6f20e99fb> ) - Add load() statements for the Bazel builtin top-level java symbols ( #11105 <https://github.com/grpc/grpc-java/pull/11105>) (add8c37 <https://github.com/grpc/grpc-java/commit/add8c37a4148f6dd857dd31c7425e2ae526e0528> ) - Add StatusProto.toStatusException overload to accept Throwable (#11083 <https://github.com/grpc/grpc-java/pull/11083>) (5c9b492 <https://github.com/grpc/grpc-java/commit/5c9b492318d6a996f7703ee83d91e0568cfe0c2a> ) Bug fixes - Fix retry race condition that can lead to double decrementing inFlightSubStreams and so miss calling closed (#11026 <https://github.com/grpc/grpc-java/pull/11026>) (bdb6230 <https://github.com/grpc/grpc-java/commit/bdb623031f4ce0048742c6ff945272d65b467f63> ) - Change defaults to use the older PickFirstLoadBalancer and disable Happy Eyeballs. This disables a performance optimization added in v1.63. ( #11120 <https://github.com/grpc/grpc-java/pull/11120>) We have had a report that the new implementation can trigger a NullPointerException - core: Transition to CONNECTING immediately when exiting idle (2c5f0c2 <https://github.com/grpc/grpc-java/commit/2c5f0c22cdd66687f0c36f648f3fc3a05ae90309>). Previously the visible state change from channel.getState() was delayed until the name resolver returned results. This had no impact to RPC behavior - xds: Specify a locale for upper/lower case conversions (e630593 <https://github.com/grpc/grpc-java/commit/e6305930def1c2fc7dd9bdbe74af3e2c3fe229f7> ) - rls: Synchronization fixes in CachingRlsLbClient (6e97b18 <https://github.com/grpc/grpc-java/commit/6e97b180b4d1f94977ec1b91295c99333462dfa0>). These races had not been witnessed in practice - rls: Guarantee backoff will update RLS picker (f9b6e5f <https://github.com/grpc/grpc-java/commit/f9b6e5f92d20d7c68e59d392f8b42317502bb296>). This fixes a regression introduced by 6e97b18 <https://github.com/grpc/grpc-java/commit/6e97b180b4d1f94977ec1b91295c99333462dfa0> that could hang RPCs instead of using fallback, but fixes a pre-existing bug that could greatly delay RPCs from using fallback. - rls: Fix time handling in CachingRlsLbClient (da619e2 <https://github.com/grpc/grpc-java/commit/da619e2bde611efd623ec1ec397a3b8c25931966>). This could have caused backoff entries to improperly be considered expired - xds: Properly disable the default endpoint identification algorithm with XdsChannelCredentials (097a46b <https://github.com/grpc/grpc-java/commit/097a46b76171eb83f045c4c88d650dd833a7fa88>). The credential does its own verification and the default needs to be disabled for SPIFFE - netty: Release SendGrpcFrameCommand when stream is missing (#11116 <https://github.com/grpc/grpc-java/pull/11116>) (fb9a108 <https://github.com/grpc/grpc-java/commit/fb9a10809f5106333f447fe0cda1c761d5846f72> ) - okhttp: Remove finished stream even if a pending stream was started ( d21fe32 <https://github.com/grpc/grpc-java/commit/d21fe32bea9dacb33d2c975847361995b4d170bf> ) Dependencies - cronet: Update Cronet to latest release + Move to Stable Cronet APIs. ( 5a8da19 <https://github.com/grpc/grpc-java/commit/5a8da19f32a3c4dcf582b4c2516eada9068ce33c> ) - cronet: @JavaDoc update android permission MODIFY_NETWORK_ACCOUNTING (deprecated) => UPDATE_DEVICE_STATS (c703a1e <https://github.com/grpc/grpc-java/commit/c703a1ee07eee5034ab2a4735cb475510809c631> ) - cronet: Update to Java-8 API's and tighten the scopes (163efa3 <https://github.com/grpc/grpc-java/commit/163efa3716216ad03f2bec60a82c1b3a7fc69a79> ) - cronet: Update to StandardCharsets and assertNotNull API's (77e59b2 <https://github.com/grpc/grpc-java/commit/77e59b29dd5328fdb8166e22b6968e3ea834ed8c> ) Acknowledgements @panchenko <https://github.com/panchenko> @Ashok-Varma <https://github.com/Ashok-Varma> @benjaminp <https://github.com/benjaminp> @AutomatedTester <https://github.com/AutomatedTester> @hypnoce <https://github.com/hypnoce> @keith <https://github.com/keith> @laglangyue <https://github.com/laglangyue> @rostik404 <https://github.com/rostik404> @ryanpbrewster <https://github.com/ryanpbrewster> @abtom <https://github.com/abtom> @hvadehra <https://github.com/hvadehra> @rtadepalli <https://github.com/rtadepalli> -- 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 grpc-io+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/db6d23ae-253d-40d7-ad6b-dd2082603383n%40googlegroups.com.