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

grpc / grpc-java / #20551
89%

Build:
DEFAULT BRANCH: master
Ran 03 Nov 2026 03:37AM 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

03 Nov 2026 03:24AM UTC coverage: 89.449% (+0.007%) from 89.442%
#20551

push

github

web-flow
xds: Fix intermittent failure in RingHashLoadBalancerTest.allSubchannelsInTransientFailure (#13130)

Deliver TRANSIENT_FAILURE in deterministic server order using
subchannelList instead of iterating over subchannels.values() (HashMap),
and expect 2 connections.

Why this became flaky with the new PickFirst LB:
Old PickFirst unconditionally invoked subchannel.requestConnection() on
each call without checking connection state, so triggering proactive
connections twice always produced 2 connection requests regardless of
iteration order (either [A, B] or [A, A]).

New PickFirst deduplicates connection requests if a subchannel is
already in CONNECTING state. When iterating over a HashMap, if the same
subchannel was triggered twice, New PickFirst deduplicated it to 1
connection, leading to the assumption in #13094 that New PickFirst would
always yield 1 connection. However, if two distinct subchannels were
triggered (e.g. server1 then server2), New PickFirst does not
deduplicate and yields 2 connections, causing verifyConnection(1) to
fail intermittently.

Fix this by iterating deterministically in server order, which reliably
triggers two distinct subchannels (server1 and server2) in both old and
new PickFirst.

Failure test run in fusion2/d9446b33-dc0e-4dee-b901-ea9b3b57f3c6

39413 of 44062 relevant lines covered (89.45%)

0.89 hits per line

Coverage Regressions

Lines Coverage ∆ File
2
95.0
-1.0% ../core/src/main/java/io/grpc/internal/ServerCallImpl.java
2
81.05
0.0% ../okhttp/src/main/java/io/grpc/okhttp/ExceptionHandlingFrameWriter.java
2
97.43
0.2% ../xds/src/main/java/io/grpc/xds/ExternalProcessorClientInterceptor.java
1
90.97
-0.35% ../core/src/main/java/io/grpc/internal/DelayedClientCall.java
1
87.63
-0.21% ../inprocess/src/main/java/io/grpc/inprocess/InProcessTransport.java
1
87.88
-3.03% ../netty/src/main/java/io/grpc/netty/ClientTransportLifecycleManager.java
1
78.45
1.72% ../servlet/src/main/java/io/grpc/servlet/ServletServerStream.java
Jobs
ID Job ID Ran Files Coverage
1 #20551.1 03 Nov 2026 03:37AM UTC 696
89.45
Source Files on build #20551
  • Tree
  • List 696
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20551
  • 601041cc 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