• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

grpc / grpc-java / #20346
89%

Build:
DEFAULT BRANCH: master
Ran 03 Jul 2026 10:36AM UTC
Jobs 1
Files 685
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Jul 2026 10:23AM UTC coverage: 89.106% (-0.01%) from 89.118%
#20346

push

github

web-flow
xds: Move backend service label plumbing to CDS (#12882)

Addresses #12431.

This moves backend service metric label plumbing from `xds_cluster_impl`
to `cds`, matching the A75/A89 aggregate cluster behavior.

Previously, `xds_cluster_impl` added the `grpc.lb.backend_service`
pick-details label and propagated `NameResolver.ATTR_BACKEND_SERVICE` to
its child policy. That works for simple clusters, but it is the wrong
layer after A75 because aggregate clusters need the leaf CDS cluster
name, not the aggregate root cluster name.

This change makes CDS responsible for backend service plumbing:

- non-aggregate CDS adds the `grpc.lb.backend_service` pick-details
label using the CDS cluster name
- non-aggregate CDS propagates `NameResolver.ATTR_BACKEND_SERVICE` to
its child policy, so WRR can consume the backend service context
- aggregate root CDS does not add the backend service attribute or
pick-details label
- leaf CDS instances under an aggregate cluster add their own leaf
cluster name
- `xds_cluster_impl` no longer owns backend service pick-details label
or child attribute propagation

The existing `InternalEquivalentAddressGroup.ATTR_BACKEND_SERVICE` path
is left unchanged for endpoint/subchannel metrics.

Tests cover:

- non-aggregate CDS propagating `NameResolver.ATTR_BACKEND_SERVICE`
- non-aggregate CDS adding `grpc.lb.backend_service`
- aggregate root CDS not adding the root cluster name
- aggregate leaf CDS instances propagating leaf cluster names
- `xds_cluster_impl` no longer adding backend service labels or
attributes
- picker tests using a non-null `PickDetailsConsumer`, matching the real
`PickSubchannelArgs` contract

37992 of 42637 relevant lines covered (89.11%)

0.89 hits per line

Coverage Regressions

Lines Coverage ∆ File
17
93.87
0.4% ../xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java
11
95.18
-0.08% ../xds/src/main/java/io/grpc/xds/ClusterImplLoadBalancer.java
3
93.22
-1.69% ../core/src/main/java/io/grpc/internal/AbstractClientStream.java
3
92.94
-0.42% ../okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java
3
74.14
-2.59% ../servlet/src/main/java/io/grpc/servlet/ServletServerStream.java
1
90.97
-0.35% ../core/src/main/java/io/grpc/internal/DelayedClientCall.java
1
74.23
-1.03% ../servlet/src/main/java/io/grpc/servlet/AsyncServletOutputStreamWriter.java
Jobs
ID Job ID Ran Files Coverage
1 #20346.1 03 Jul 2026 10:36AM UTC 685
89.11
Source Files on build #20346
  • Tree
  • List 685
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20346
  • c8079eed on github
  • Prev Build on master
  • Next Build on master
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc