chore(deps): unify quic-go on v0.61.0 - #1057
Conversation
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>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (2)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. 📝 WalkthroughWalkthroughThe worker and gRPC proxy modules now use aligned ChangesQUIC dependency alignment
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to 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: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
FrankSpitulski
left a comment
There was a problem hiding this comment.
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.
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.
src/libraries/go/worker(client side)src/invocation-plane-services/grpc-proxy(server side)src/compute-plane-services/worker-utilsThis 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.modandgo.sumin the two modules that depend on quic-go directly. Nothing else.The dependency graph gets smaller:
github.com/francoispqt/gojayremovedgo.uber.org/mockremovedgolang.org/x/toolsremovedgithub.com/quic-go/qpackv0.5.1 to v0.6.0golang.org/x/{crypto,mod,net,sync,sys,text}Net across all four files: 50 insertions, 179 deletions.
bazel mod tidyalso wanted to delete an unrelated blank line inMODULE.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 ./...andgo testpass for both modules, andbazel testpasses 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/proxyexercise 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-utilsconsumes 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-gov0.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