v1.59.0
gRPC Java 1.59.0 Release Notes
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
andAbstractServerImplBuilder
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 ofForwardingChannelBuilder
, which will be deprecated in the following release. (#10585, #10406) - api: Add
LoadBalancer.FixedResultPicker
convenience class for load balancer implementations. It is a replacement forErrorPicker
andEMPTY_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