API Changes
- balancer: Custom LB policies that record metrics must use the new
MetricsRecorder
method onBalancer.ClientConn
instead of the removedBalancer.BuildOptions.MetricsRecorder
field to obtain a metrics recorder. (#8027) - balancer:
balancer.ClientConn
implementations must now embed a delegate implementation. This allows grpc-go to add new methods to the interface and remain backward compatible. (#8026) - balancer/endpointsharding: The constructor accepts the child balancer's builder and a struct with optional configuration. (#8052)
New Features
- xds: Add support for dualstack via the additional_addresses field in the Endpoint resource. To disable this feature, set the environment variable
GRPC_EXPERIMENTAL_XDS_DUALSTACK_ENDPOINTS=false
. (#8134) - stats/opentelemetry: Add experimental support for OpenTelemetry tracing. (#7852)
- xds/internal/xdsclient: Add counter metrics for valid and invalid resource updates. (#8038)
- balancer/leastrequest, roundrobin: Add dualstack support. (#7969, #7966)
- balancer/endpointsharding: Balancers created with the new
DisableAutoReconnect
option will not attempt to callExitIdle
automatically on their children when the children report idle. (#8052)
Bug Fixes
- client: Fix support for proxies when using
grpc.NewClient
so the target is resolved by the proxy as expected. (#7881)- Added
WithLocalDNSResolution()
dial option to explicitly force target resolution on the client instead. (#7881)
- Added
- weightedtarget: Return erroring picker when no targets are configured. (#8070)
- xds: Fail RPCs with
UNAVAILABLE
when the EDS resource is missing or contains no endpoints (#8070) - xdsclient: Fix a bug where connectivity failures were reported to resource watchers before trying all listed servers. (#8075)
- grpc: Fix the number of bytes reported in the error message when encoded messages are larger than 4GB. (#8033)
- xds: Fixed a bug preventing tests from creating multiple servers or channels with different bootstrap configs. (#8050)
- grpc: Fix message length checks when compression is enabled and
maxReceiveMessageSize
isMaxInt
(#7918)- Special Thanks: @vinothkumarr227