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

grpc / grpc-java / #20033
89%

Build:
DEFAULT BRANCH: master
Ran 29 Oct 2025 04:55PM UTC
Jobs 1
Files 621
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

29 Oct 2025 04:43PM UTC coverage: 88.533% (-0.03%) from 88.561%
#20033

push

github

web-flow
xds,googleapis: Allow wrapping NameResolver to inject XdsClient (#12450)

Since there is no longer a single global XdsClient, it makes more sense
to allow things like the c2p name resolver to inject its own bootstrap
even if there is one defined in an environment variable.
GoogleCloudToProdNameResolver can now pass an XdsClient instance to
XdsNameResolver, and SharedXdsClientPoolProvider allows
GoogleCloudToProdNameResolver to choose the bootstrap for that one
specific target.

Since XdsNameResolver is no longer in control of the XdsClient pool the
XdsClient instance is now passed to ClusterImplLb. A channel will now
only access the global XdsClient pool exactly once: in the name
resolver.

BootstrapInfo is purposefully being shared across channels, as we really
want to share things like credentials which can have significant memory
use and may have caches which reduce I/O when shared. That is why
SharedXdsClientPoolProvider receives BootstrapInfo instead of
Map<String,?>.

Verifying BootstrapInfo.server() is not empty was moved from
SharedXdsClientPoolProvider to GrpcBootstrapperImpl so avoid
getOrCreate() throwing an exception in only that one case. It might make
sense to move that to BootstrapperImpl, but that will need more
investigation.

A lot of tests needed updating because XdsClientPoolProvider is no
longer responsible for parsing the bootstrap, so we now need bootstraps
even if XdsClientPoolProvider will ignore it.

This also fixes a bug in GoogleCloudToProdNameResolver where it would
initialize the delegate even when it failed to create the bootstrap.
That would certainly cause all RPCs on the channel to fail because of
the missing bootstrap and it defeated the point of `succeeded == false`
and `refresh()` which was supposed to retry contacting the metadata
server.

The server tests were enhanced to give a useful error when
server.start() throws an exception, as otherwise the real error is lost.

b/442819521

34966 of 39495 relevant lines covered (88.53%)

0.89 hits per line

Uncovered Existing Lines

Lines Coverage ∆ File
1
87.65
-0.41% ../core/src/main/java/io/grpc/internal/DelayedClientCall.java
1
84.3
-0.41% ../netty/src/main/java/io/grpc/netty/Utils.java
2
0.0
0.0% ../xds/src/main/java/io/grpc/xds/InternalGrpcBootstrapperImpl.java
3
77.19
-0.39% ../xds/src/main/java/io/grpc/xds/XdsServerBuilder.java
4
91.84
-5.84% ../xds/src/main/java/io/grpc/xds/GrpcBootstrapperImpl.java
5
92.54
-4.52% ../xds/src/main/java/io/grpc/xds/SharedXdsClientPoolProvider.java
11
95.04
-0.06% ../xds/src/main/java/io/grpc/xds/ClusterImplLoadBalancer.java
13
0.0
0.0% ../xds/src/main/java/io/grpc/xds/InternalSharedXdsClientPoolProvider.java
24
94.91
-0.15% ../xds/src/main/java/io/grpc/xds/XdsServerWrapper.java
43
91.83
-1.51% ../xds/src/main/java/io/grpc/xds/XdsNameResolver.java
Jobs
ID Job ID Ran Files Coverage
1 #20033.1 29 Oct 2025 04:55PM UTC 621
88.53
Source Files on build #20033
  • Tree
  • List 621
  • Changed 18
  • Source Changed 0
  • Coverage Changed 18
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20033
  • 27d15089 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