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

grpc / grpc-java / #20500
89%

Build:
DEFAULT BRANCH: master
Ran 05 Oct 2026 10:58AM UTC
Jobs 1
Files 697
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

05 Oct 2026 10:45AM UTC coverage: 89.369% (+0.01%) from 89.356%
#20500

push

github

web-flow
core: prevent RetriableStream registry leak on cancel race (#13083)

When `ClientCall.cancel()` races `ClientCall.start()` on a retry-enabled
channel, `RetriableStream.cancel()` can commit the stream before
`start()` calls `prestart()`.

The commit callback then removes nothing because the stream has not been
registered yet. `prestart()` subsequently registers the
already-committed stream, and the one-shot commit prevents any later
removal. This permanently retains the stream in
`UncommittedRetriableStreamsRegistry` and can delay channel shutdown.

This change makes `RetriableStream.start()` check whether the stream was
committed after `prestart()`. If so, it runs `postCommit()` again after
registration, allowing the registry to remove the stream.

Added regression coverage for retry streams, hedging streams, and
streams without retry or hedging policy.

Related issue: #13034

Testing:
- `git diff --check` passed.
- The targeted local Gradle test could not resolve Gradle Plugin Portal
dependencies because DNS resolution failed in the Docker environment.
- The GitHub Actions JDK 17 job failed in the unrelated
`grpc-servlet-jakarta` test
`JettyTransportTest.frameAfterRstStreamShouldNotBreakClientChannel`; the
other reported checks passed.

39266 of 43937 relevant lines covered (89.37%)

0.89 hits per line

Coverage Regressions

Lines Coverage ∆ File
20
95.53
0.03% ../core/src/main/java/io/grpc/internal/RetriableStream.java
5
95.59
-0.5% ../xds/src/main/java/io/grpc/xds/ExternalProcessorClientInterceptor.java
1
92.99
-0.47% ../xds/src/main/java/io/grpc/xds/client/ControlPlaneClient.java
Jobs
ID Job ID Ran Files Coverage
1 #20500.1 05 Oct 2026 10:58AM UTC 697
89.37
Source Files on build #20500
  • Tree
  • List 697
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20500
  • b7311586 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