Skip to content

v1.59.0

Compare
Choose a tag to compare
@temawi temawi released this 20 Oct 18:12
· 570 commits to master since this release

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 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