Releases: grpc/grpc-java
v1.52.0
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
v1.51.1
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
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
v1.50.2
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
v1.50.0
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 aboolean
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
v1.47.1
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
onStatusListener
when the delegated server initial start fails. (#9276, #9279)
Dependencies
- Bump protobuf to 3.19.6
v1.46.1
Behavior Changes
- xds: Remove permanent error handling in LDS update in XdsServerWrapper. Also notify
OnNotServing
onStatusListener
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
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
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