gRPC Java 1.83.0 Release Notes
API Changes
- api: Turn on RFC 3986 parsing by default and update javadoc. (4456721)
- api: Add Grpc.newChannelBuilder accepting NameResolverRegistry (#11901) (2b86f8f). This allows users to explicitly provide a NameResolverRegistry during channel creation rather than relying on the global registry, offering better isolation and control over name resolution per-channel.
Behavior Changes
- okhttp: enable TLS 1.3 for servers on Android (3018ce3). v1.82.0 enabled TLS 1.3 for clients; this does the same for servers
- xds: enable orca to lrs propagation by default (#12836) (1e85674) Enables xDS configuration to control which fields get propagated from ORCA backend metric reports to LRS load reports as per gRFC A85
- xds: Use leaf cluster name for backend service label in metrics, instead of aggregate cluster name (#12882) (c8079ee). This only has an effect when using aggregate clusters
- xds: Hold parsed service config in CdsUpdate (3db3235). Previously, modifications to LoadBalancerRegistry could cause failures in the LB tree
- xds: Revert "xds: reuse connections to the control plane across channels" added in 1.81.0 (d49c0b1). If using xds heavily with many targets, then MAX_CONCURRENT_STREAMS to the control plane could be exceeded. This then prevents loading resources for new targets, which causes those channels to hang on name resolution. RPCs would see the nondescript "DEADLINE_EXCEEDED: Deadline Context was exceeded after Xs" or "DEADLINE_EXCEEDED: Deadline CallOptions was exceeded after Xs"
Improvements
- api: Move attributes to the end of ResolvedAddresses.toString(), for better legibility (103bd4b)
- core: normalize service config number values (#12826) (663c505) This updates default service config validation to accept numeric values represented as Number, not only Double. Common JSON parsers may deserialize integer-looking JSON values such as maxAttempts: 4 and backoffMultiplier: 2 as Integer, which previously caused defaultServiceConfig() to fail with IllegalArgumentException. The values are normalized to Double when copied into the validated service config, preserving the existing internal representation expected by the service config parsing code.
- core: DEADLINE_EXCEEDED before initial name resolution completes will now mention “name_resolver” in the error description (56d2b25). Previously there was not a hint as to what gRPC was delayed on when the deadline was exceeded.
- netty: Reduce TcpMetrics log from INFO to FINE (4ec83df). This removes unnecessary log noise
- core: Enable child channel plugins (#12578) (89aef90). This introduces the ChildChannelConfigurer API to allow intercepting and customizing the configuration (such as injecting interceptors or modifying credentials) of child channels created dynamically by load balancers.
Dependencies
- Upgrade to Netty 4.2.15 (66c6ab1). If you need Netty 4.1 support, please file an issue
- Upgrade codegen plugin to C++ Protobuf 35.1 (#12876) (c886f0a)
- Upgrade various dependencies (064272c):
- gson to 2.14.0
- guava to 33.6.0
- cel-java to 0.13.0
- protobuf-java to 3.25.9
- error-prone-annotations to 2.50.0
- opentelemetry to 1.63.0
Documentation
- Document how to build with Bazel and introduce bazel support for building android and binder (#12811) (f94574e)
Thanks to
tian__mi__mi@
codingkiddo@
Zhengcy05@