Skip to content

chore(deps): unify quic-go on v0.61.0 - #1057

Open
balajinvda wants to merge 1 commit into
mainfrom
chore/unify-quic-go-v0.61.0
Open

chore(deps): unify quic-go on v0.61.0#1057
balajinvda wants to merge 1 commit into
mainfrom
chore/unify-quic-go-v0.61.0

Conversation

@balajinvda

@balajinvda balajinvda commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Issues

Closes #1056

Why

The worker and the proxy are the two ends of the same QUIC connection and were pinned six minor versions apart, both behind current.

Module before after
src/libraries/go/worker (client side) v0.53.0 v0.61.0
src/invocation-plane-services/grpc-proxy (server side) v0.59.1 v0.61.0
src/compute-plane-services/worker-utils v0.53.0 indirect picks it up with the library pin

This is not a fix for anything observed. While investigating stateful session failures I checked the release notes between v0.54 and v0.61 for anything relevant: there is no idle-timeout or keep-alive change, and no public API for path migration or for changing a connection's local address. The reason to do it is the skew itself, which only widens with time.

Prerequisite already met

v0.60 and later require Go 1.25. All three modules already declare go 1.25.0, so nothing else had to move.

What changed

go.mod and go.sum in the two modules that depend on quic-go directly. Nothing else.

The dependency graph gets smaller:

  • github.com/francoispqt/gojay removed
  • go.uber.org/mock removed
  • golang.org/x/tools removed
  • github.com/quic-go/qpack v0.5.1 to v0.6.0
  • routine bumps to golang.org/x/{crypto,mod,net,sync,sys,text}

Net across all four files: 50 insertions, 179 deletions.

bazel mod tidy also wanted to delete an unrelated blank line in MODULE.bazel; that was reverted to keep the diff to the bump itself.

Customer Release Notes

Not customer visible.

Plan Summary

Not applicable.

Usage

Not applicable.

Testing

go build ./... and go test pass for both modules, and bazel test passes for both proxy packages. No API breakage: neither module needed a source change.

No new tests. This is a dependency bump with no behaviour change to assert, and the existing QUIC end-to-end tests in src/libraries/go/worker/proxy exercise the upgraded path.

Notes

Worth landing on its own rather than bundled with behavioural work, so that if it does shift anything at runtime it is attributable.

worker-utils consumes the worker library as a pinned Go module, so it picks up v0.61.0 when that pin is next bumped rather than in this PR.

References

None

Related Pull Requests

None

Dependencies

github.com/quic-go/quic-go v0.53.0 and v0.59.1 to v0.61.0. BSD-3-Clause, unchanged, already on the allow list. Transitively removes gojay, go.uber.org/mock and x/tools. No NOTICE change required.

Summary by CodeRabbit

  • Chores
    • Updated underlying networking and concurrency components to newer versions.
    • Refreshed supporting libraries and removed obsolete transitive dependencies.
    • No user-facing features or behavior changes.

The worker and the proxy are the two ends of the same QUIC connection and
were pinned six minor versions apart, both behind current: the worker
library on v0.53.0 and grpc-proxy on v0.59.1. worker-utils inherits
v0.53.0 indirectly from the worker library.

Both move to v0.61.0.

This is not a fix for anything observed. The release notes between v0.54
and v0.61 contain no idle-timeout or keep-alive change, and no public API
for path migration or for changing a connection's local address, all of
which were checked while investigating stateful session failures. The
reason to do it is the skew itself.

v0.60 and later require Go 1.25, which all three modules already declare,
so nothing else had to move.

The dependency graph gets smaller rather than larger: gojay,
go.uber.org/mock and x/tools drop out entirely, qpack goes to v0.6.0, and
the golang.org/x packages take routine bumps.

Co-Authored-By: Balaji Ganesan <bganesan@nvidia.com>
@balajinvda
balajinvda requested review from a team as code owners August 21, 2026 04:30
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ee3bb028-fbb6-458f-8f01-7e8a73da85a3

📥 Commits

Reviewing files that changed from the base of the PR and between 171757e and 368296a.

⛔ Files ignored due to path filters (2)
  • src/invocation-plane-services/grpc-proxy/go.sum is excluded by !**/*.sum
  • src/libraries/go/worker/go.sum is excluded by !**/*.sum
📒 Files selected for processing (2)
  • src/invocation-plane-services/grpc-proxy/go.mod
  • src/libraries/go/worker/go.mod

Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review.


📝 Walkthrough

Walkthrough

The worker and gRPC proxy modules now use aligned quic-go versions. Related golang.org/x dependencies are upgraded, and unused indirect worker dependencies are removed.

Changes

QUIC dependency alignment

Layer / File(s) Summary
Transport dependency updates
src/invocation-plane-services/grpc-proxy/go.mod, src/libraries/go/worker/go.mod
Updates quic-go to v0.61.0 and upgrades x/net, x/sync, and qpack.
Worker transitive dependency cleanup
src/invocation-plane-services/grpc-proxy/go.mod, src/libraries/go/worker/go.mod
Upgrades indirect x/crypto, x/sys, and x/text dependencies. Removes unused indirect go.uber.org/mock, x/mod, and x/tools dependencies.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 36829

This dependency-only update changes quic-go versions without source or stated API behavior changes, and the documented builds, tests, and QUIC end-to-end coverage pass. No actionable merge-blocking risk remains after normal checks and review.

Suggested reviewers: nvaghela-oss

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title follows Conventional Commits and accurately describes a dependency-only update that unifies quic-go versions.
Linked Issues check ✅ Passed Both worker and gRPC proxy modules update quic-go to v0.61.0, addressing the linked issue's version-skew objective.
Out of Scope Changes check ✅ Passed The changes are limited to dependency declarations and align with the linked issue's quic-go unification objective.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/unify-quic-go-v0.61.0

Comment @coderabbitai help to get the list of available commands.

@FrankSpitulski FrankSpitulski left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changes to quic-go are particularly finicky. the ci tests are not enough. try the builds out in stage and check what happens when rolling envoy, grpc-proxy, and the worker during active and idle requests with both long lived streaming and normal RPCs. look for timeout, keepalive, and failure detection + auto retry. updates in the past have caused quic clients to get "stuck" and never recover. I'm surprised there's no breaking api changes either. we have a bunch of lower level code manually managing the connections due to previous bugs with connection close detection. those usually break between versions. it's worth looking to see if that was implemented in the library and removing it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

quic-go versions are skewed across the two ends of the same connection

3 participants