gRPC-Java v1.59.0 Released

1,247 views
Skip to first unread message

Terry Wilson

unread,
Oct 20, 2023, 2:42:19 PM10/20/23
to grpc.io
You can now grab the v1.59.0 release.

PLANNED ABI BREAKAGE!

This breaks the ABI of the @ExperimentalApi classes listed below.
This does not impact source code (API); it only impacts code compiled with a different version of gRPC than it runs with (ABI).

Users that recompiled their code using grpc-java v1.36.0 (released on Feb 23, 2021) and later, ARE NOT AFFECTED.
Users that compiled their source using grpc-java earlier than v1.36.0 may need to recompile when upgrading to grpc-java v1.59.0.

See details in #10406.

Affected classes

Class io.grpc.internal.AbstractManagedChannelImplBuilder is deleted, and no longer in the class hierarchy of the channel builders:

io.grpc.netty.NettyChannelBuilder
io.grpc.okhttp.OkhttpChannelBuilder
io.grpc.cronet.CronetChannelBuilder
Class io.grpc.internal.AbstractServerImplBuilder is deleted, and no longer in the class hierarchy of the server builders:

io.grpc.netty.NettyServerBuilder
io.grpc.inprocess.InProcessServerBuilder

API Changes
core: AbstractManagedChannelImplBuilder and AbstractServerImplBuilder are removed (#10530). This is ABI-breaking, see the warning above. (#10406)
core: Removed .class file hack previously introduced in v1.36.0 to ease removal of internal ABIs. (#10406)
api: Add ForwardingChannelBuilder2, an ABI-safe version of ForwardingChannelBuilder, which will be deprecated in the following release. (#10585, #10406)
api: Add LoadBalancer.FixedResultPicker convenience class for load balancer implementations. It is a replacement for ErrorPicker and EMPTY_PICKER added in 1.58.0
testing: Stabilize TestMethodDescriptors (#10530)

Behavior Changes
core: de-expermentalize pick first config parsing (#10531)
netty: Respect -Dio.netty.allocator.type=unpooled when getting Netty Allocator instead of ignoring it (#10543)
netty: Use UNAVAILABLE for connections closed while writing. Previously this would result in UNKNOWN
binder: Enable indirect addressing using s. (#10550)

Improvements
core: only use reflection to resolve InternalCensusStatsAccessor once instead of once per channel
core: enhance error message in the case of DEADLINE_EXCEEDED to indicate name resolution delay.
netty: When creating a connection, use java.util.logging formatting instead of String.format to avoid work when not logged
netty: Touch ByteBuf when message framing has been decoded. If the buffer is leaked, this helps narrow down the source of reference counting bug
java_grpc_library.bzl: Disable Automatic Exec Groups inside grpc libraries (#10514). This improves compatibility with future Bazel versions while retaining Bazel 5.x compatibility

Bug Fixes
netty: Avoid NettyAdaptiveCumulator incorrectly releasing its input ByteBuf twice when reading messages under certain error conditions (#10537)
xds: Add fix for xdstp replacement for percent-encoded authorities (#10571)

Documentation
API documentation (Javadoc) for Server and Channel builders now correctly displays inherited methods and the class hierarchy. (#10406)
examples: add an example for OAuth (#10560)

Dependencies
Upgrade Netty to 4.1.97.Final

Acknowledgements
John Cormie (@jdcormie)
Stephane Landelle (@slandelle)
@kotlaja
Reply all
Reply to author
Forward
0 new messages