Skip to content

Releases: grpc/grpc-java

v1.52.0

11 Jan 02:45
Compare
Choose a tag to compare

gRPC Java 1.52.0 Release Notes

grpc-xds starting with 1.51.0 had a regression where resources might stop receiving updates. The trigger could happen hours or days after the binary had started. xDS users should avoid this release and use 1.50.x until patch releases with the fix are available. #9809

API Changes

  • Fix CallOptions to be properly @Immutable (#9689)
  • binder: Promote out of experimental status (#9669). Much of the API is now stable

New Features

  • xds: Support localities in multiple priorities (#9683)
  • xds: Log xDS node ID with verbosity INFO when environment variable GRPC_LOG_XDS_NODE_ID=true (#9731)

Examples

  • Add examples for name resolver and load balancer (#9700)
  • Swap to ChannelCredentials/ServerCredentials API, as it is preferred

Bug Fixes

  • xds:Fix ConcurrentModificationException in PriorityLoadBalancer (#9728)
  • ManagedChannelImpl.SubchannelImpl fix args check to avoid NPE (#9651)
  • okhttp: Add missing server support for TLS ClientAuth (#9711)
  • binder: Ensure the security interceptor is always closest to the actual transport (#9716)
  • bazel: Include @generated dep for autovalue. This fixes builds of xds and rls using Java 9+
  • xds: Nack xds response when weighted cluster total weight sums zero (#9738)
  • core: Fix a bug about a retriable stream lifecycle. It stops using the call executor resource in a retriable stream when the client call is closed, thus preventing potential channel panics. (#9626)

Behavior Changes

  • binder: Set default idle timeout to 60 seconds, and enable "strict lifecycle management". (#9486)
  • xds: Limit ring hash max size to 4K instead of 8M (#9709). RingHashOptions.setRingSizeCap() can increase the limit
  • binder: Set default idle timeout to 60 seconds, and add BinderChannelBuilder.strictLifecycleManagement() which disables idle timeout and prevents it from being changed (#9486). Disabling idle timeout can be useful to find bugs in applications that fail to promptly shut down the channel and are particularly sensitive to keeping Binder instances alive.
  • bazel: Replace ctx.host_configuration.host_path_separator with ctx.configuration.host_path_separator (#9742). This changes no behavior today, but improves future compatibility with newer versions of Bazel
  • xds: Refactor internal logics about LDS and CDS resource handling. It may cause minor log line changes about corresponding RDS and EDS subscriber event notification, but it should not change xds name resolution and LB behavior. (#9724)

Dependencies

Acknowledgement

@RapperCL
@Smityz
@pandaapo

v1.51.1

14 Dec 22:27
Compare
Choose a tag to compare

grpc-xds starting with 1.51.0 had a regression where resources might stop receiving updates. The trigger could happen hours or days after the binary had started. xDS users should avoid this release and use 1.50.x until patch releases with the fix are available. #9809

Bug Fixes

  • xds: Fix ConcurrentModificationException in PriorityLoadBalancer. (#9744)

v1.51.0

19 Nov 00:25
Compare
Choose a tag to compare

grpc-xds starting with 1.51.0 had a regression where resources might stop receiving updates. The trigger could happen hours or days after the binary had started. xDS users should avoid this release and use 1.50.x until patch releases with the fix are available. #9809

Bug Fixes

  • grpclb: Fix a debug logging message which incorrectly logged loadbalancer addresses under backend addresses. (#9602)

New Features

  • okhttp: okhttp server now supports maxConnectionAge and maxConnectionAgeGrace configuration for improved connection management. (#9649)

Behavior Changes

  • netty: switch default cumulation strategy from MERGE to ADAPTIVE. When accumulating incoming network data, Adaptive cumulator dynamically switches between MERGE and COMPOSE strategies to minimize the amount of copying while also limiting per-buffer overhead. (#9558)

Acknowledgements

@TrevorEdwards

v1.50.2

21 Oct 05:23
Compare
Choose a tag to compare

Bug fixes

gcp-observability: Supports period(.) in the service name part of regular expression for a fully-qualified method to accept "package.service"

v1.50.1

21 Oct 05:23
Compare
Choose a tag to compare

gcp-observability: support new configuration defined in grpc-gcp-observability public preview user guide

v1.50.0

12 Oct 15:34
Compare
Choose a tag to compare

New Features

  • okhttp: Added connection management features to okhttp server, including maxConnectionIdle(), permitKeepAliveTime(), and permitKeepAliveWithoutCalls() (#9494, #9544)
  • binder: Add SecurityPolicies for checking device owner/profile owner (#9428)

API Changes

  • api: Add LoadBalancer.acceptResolvedAddresses() (#9498). The method is like handleResolvedAddresses() but returns a boolean of whether the addresses and configuration were accepted. Not accepting the update triggers the NameResolver to retry after a delay. We are not yet encouraging migration to this method, as there is still a second future API change
  • core: add CallOptions to CallCredentials.RequestInfo (#9538)

Bug Fixes

  • auth: Fix AppEngine failing while retrieving access token when instantiating a blocking stub using AppEngineCredentials (#9504)
  • core: Ensure that context cancellationCause is set (#9501)
  • core: Update outlier detection max ejection logic to allow exceeding the limit by one, to match Envoy. (#9489, #9492)
  • core: outlier detection to honor min host request volume (#9490)
  • okhttp: Add timeout for HTTP CONNECT proxy handshake (#9586)
  • xds: ringhash policy in TRANSIENT_FAILURE should not attempt connecting when already in connecting (#9535). With workloads where most requests have the same hash, ring hash should behave more like pick-first of slowly trying backends

Dependencies

  • netty: upgrade netty from 4.1.77.Final to 4.1.79.Final and tcnative from 2.0.53 to 2.0.54 (#9451)

Acknowledgements

@cpovirk
@prateek-0
@sai-sunder-s

v1.47.1

07 Oct 18:07
Compare
Choose a tag to compare

Bug Fixes

  • core: Fix retry causing memory leak for canceled RPCs. (#9416)

Behavior Changes

  • xds: Remove permanent error handling in LDS update in XdsServerWrapper. Also notify OnNotServing on StatusListener when the delegated server initial start fails. (#9276, #9279)

Dependencies

  • Bump protobuf to 3.19.6

v1.46.1

07 Oct 17:57
Compare
Choose a tag to compare

Behavior Changes

  • xds: Remove permanent error handling in LDS update in XdsServerWrapper. Also notify OnNotServing on StatusListener when the delegated server initial start fails. (#9278, #9280)
  • xds: Protect xdstp processing with federation env var. If the xds server uses xdstp:// resource names it was possible for federation code paths to be entered even without enabling the experimental federation support. This is now fixed and it is safe for xds servers to use xdstp:// resource names. (#9190)

Dependencies

  • Bump protobuf to 3.19.6

v1.45.2

07 Oct 18:55
Compare
Choose a tag to compare

Bug Fixes

  • xds: fix bugs in ring-hash load balancer picking subchannel behavior per gRFC. The bug may cause connection not failing over from TRANSIENT_FAILURE status. (#9085)
  • xds: Protect xdstp processing with federation env var. If the xds server uses xdstp:// resource names it was possible for federation code paths to be entered even without enabling the experimental federation support. This is now fixed and it is safe for xds servers to use xdstp:// resource names. (#9190)

Behavior Changes

  • xds: change ring_hash LB aggregation rule to better handle transient_failure channel status (#9084)

Dependencies

  • Bump protobuf to 3.19.6
  • bom: Exclude grpc-observability. The module does not exist in 1.45.x. Should be a noop (#9122)

v1.44.2

07 Oct 18:55
Compare
Choose a tag to compare

Bug Fixes

  • netty: Fixed incompatibility with Netty 4.1.75.Final that caused COMPRESSION_ERROR (#9004)
  • xds: Fix LBs blindly propagating control plane errors (#9012). This change forces the use of UNAVAILABLE for any xDS communication failures, which otherwise could greatly confuse an application. This is essentially a continuation of the fix in 1.45.0 for XdsNameResolver, but for other similar cases
  • xds: Fix XdsNameResolver blindly propagates control plane errors (#8953). This change forces the use of UNAVAILABLE for any xDS communication failures, which otherwise could greatly confuse an application
  • xds: fix bugs in ring-hash load balancer picking subchannel behavior per gRFC. The bug may cause connection not failing over from TRANSIENT_FAILURE status. (#9085)

Behavior Changes

  • xds: change ring_hash LB aggregation rule to better handle transient_failure channel status (#9084)

Dependencies

  • Bump protobuf to 3.19.6