API Changes
- api: Stabilize the
SynchronizationContext
class (#10130). - api: Stabilize
io.grpc.CallCredentials
(#10208, #10211).thisUsesUnstableApi()
is@Deprecated
and has a default implementation.CallCredentials
implementations should delete their implementation or remove@Overrides
, as the method will be deleted in the future. - api: Stabilize the
ProxyDetector
hierarchy andManagedChannelBuilder.proxyDetector
method.
Behavior Changes
- core: Sticky
TRANSIENT_FAILURE
inPickFirstLoadBalancer
(#10106). See gRFC A62. If it can't connect, pick-first will now immediately fail RPCs until after it successfully connects. RPCs will no longer be delayed while it performs those attempts, which previously could cause significant (error) latency. It now also performs reconnect attempts after failure and backoff without prompting; previously it required an RPC to trigger the reconnect.ManagedChannel.idleTimeout
(defaults to 30 minutes) still applies and forces the channel idle after a period of no RPCs. - stub: Add a null check for
responseObserver
into the methods for initiating a call that takes aresponseObserver
argument. This ensures a fail fast with a clearer cause instead of an NPE when the observer is first used. - xds: Flip default for RLS being enabled to true for XDS (#10248) (#10252). If there are no RLS configurations in your XDS or you already enabled it with the environment variable this will have no effect. To disable it, set the flag
GRPC_EXPERIMENTAL_XDS_RLS_LB
to false. - xds: Rename
weighted_round_robin_experimental
LB Policy toweighted_round_robin
(#10162).
New Features
- protobuf,protobuf-lite: Allow to configure protobuf recursion limit (#10094).
- core: Optional address shuffle in
PickFirstLoadBalancer
(#10110). - xds:
pick_first
LB configuration (#10181).
Improvements
- xds: Add
error-per-second
in weight formula for client-side WRR (#10177). - xds: Use
application_utilization
and fallback tocpu_utilization
if unset in weight formula for client-side WRR. (#10256). - bazel: The README now mentions Bazel and where to find the example. (#10217).
Bug Fixes
- binder: Handle unexpected exceptions on binder threads. (#10092.
- android,binder,cronet:
.aar
file when publishing. (#10138). - api: Fix boundary check in
Status.fromCodeValue()
. (#10155). - core: Don't use system Locale for content-type matching. (#10097).
- okhttp: Fix signed-byte comparison in server when checking for ASCII in header (#10151). Without fix, authority could contain utf-8.
Dependencies
- Version pinning (e.g.,
[1.56.0]
instead of1.56.0
) has been removed from POMs, for both Netty and gRPC dependencies. The pinning was unreliable in Maven and ignored in Gradle, yet caused downloads during the build to fetch the version list. For a while we've had a BOM that helps reduce version skew. (#10175). - bazel: Add java toolchain type to all rules using
java_common
. (#10225). - Upgraded
netty-tcnative-boringssl-static
ingrpc-netty-shaded
to 2.0.61.Final (#10260). Netty itself was not updated. - Upgraded AndroidX Annotation to 1.6.0 (#10178).
- Upgraded AndroidX Core to 1.10.0 (#10178).
- Upgraded AndroidX Lifecycle-Common to 2.6.1 (#10178).
- Upgraded OpenCensus to 0.31.1 (#10178).
- Upgraded Cronet API to 108.5359.79 (#10178).
- Upgraded
proto-google-common-protos
to 2.17.0 (#10178). - Upgraded Gson to 2.10.1 (#10178).
- Upgraded PerfMark API to 0.26.0 (#10178).
- Upgraded RE2/J to 1.7 (#10178).