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

grpc / grpc-java / #20548
89%

Build:
DEFAULT BRANCH: master
Ran 28 Oct 2026 09:44PM UTC
Jobs 1
Files 696
Run time 1min
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

28 Oct 2026 09:34PM UTC coverage: 89.442% (-0.03%) from 89.47%
#20548

push

github

web-flow
xds: make ControlPlaneClient.shutdown() synchronous on syncContext (#13136)

When a higher-priority xDS server responds while a lower-priority
fallback ControlPlaneClient already has a DiscoveryResponse runnable
queued in the shared SynchronizationContext, calling
shutdownLowerPriorityCpcs() invokes cpc.shutdown() and removes the
fallback entry from serverCpClientMap.

Because ControlPlaneClient.shutdown() previously scheduled its cleanup
via syncContext.execute(...), the cleanup was placed at the tail of the
queue behind the already-queued response runnable. When that queued
response runnable executed, adsStream had not been closed yet, so
handleResourceUpdate() looked up serverCpClientMap.get(serverInfo) (now
null) and threw a NullPointerException when calling
controlPlaneClient.ackResponse(...).

Fix this by:
1. Executing ControlPlaneClient.shutdown() directly on syncContext
(enforcing syncContext.throwIfNotInThisSynchronizationContext()), which
all callers already satisfy, so adsStream is closed immediately before
any subsequently queued runnables run.
2. Adding a defensive null check for controlPlaneClient in
XdsClientImpl.handleResourceUpdate().

more context: http://b/469140342

39409 of 44061 relevant lines covered (89.44%)

0.89 hits per line

Coverage Regressions

Lines Coverage ∆ File
13
94.34
-0.35% ../xds/src/main/java/io/grpc/xds/client/XdsClientImpl.java
6
73.27
-5.94% ../servlet/src/main/java/io/grpc/servlet/AsyncServletOutputStreamWriter.java
3
93.22
-1.69% ../core/src/main/java/io/grpc/internal/AbstractClientStream.java
3
95.1
-0.43% ../core/src/main/java/io/grpc/internal/RetriableStream.java
3
74.14
-2.59% ../servlet/src/main/java/io/grpc/servlet/ServletServerStream.java
1
93.02
0.97% ../xds/src/main/java/io/grpc/xds/client/ControlPlaneClient.java
Jobs
ID Job ID Ran Files Coverage
1 #20548.1 28 Oct 2026 09:44PM UTC 696
89.44
Source Files on build #20548
  • Tree
  • List 696
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20548
  • cb2a6995 on github
  • Prev Build on master
  • Next Build on master
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc