Repository navigation
fix(connect): admit at headers and cancel abandoned calls - #122
Merged
antoinetoussaint-byte merged 1 commit intoOct 28, 2026
Merged
antoinetoussaint-byte merged 1 commit into
antoinetoussaint-byte merged 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Connect HTTP/1 calls currently wait for the full body before the existing gRPC interceptor can admit them, and an HTTP disconnect can leave downstream work running. Start the single downstream call at headers, enforce a total body budget, and cancel that same call when the browser disconnects. Reject unsupported cardinality before starting any backend call.
This is a fix at the Python FastAPI transport owner. It reuses the gRPC interceptor's admission and cancellation; it introduces no authority check or replay ledger in the Connect face. Bounds, pipelining and early refusal handling remain explicit.
Closes #121 after release/adoption. Robin's consumer tests expose header-admission, body-deadline and cancellation failures with the released generator; the consumer must select a published version and regenerate through Codefly, not patch generated code.
Validation:
go test -count=1 -run '^TestConnectFaceServesEveryProtocol$' .passed against current main (44.241s), running the complete Python transport suite. The template/test hashes match the independently reviewed local fix:9fcff20508a41f1f64d8760239dcdadceb5b87876d581aeecc5d7a439d902370/d25130494b2eb5581f6c9557c724ee049a13be92a39bfd4d02a85876a6a4b118. That earlier focused review exercised cardinality counterexamples, body arrival, cancellation and total budget. Full owner CI and release qualification remain required.Publication requires owner review, a normal tagged release and consumer selection. This account cannot push/merge the owner repository, so the tested change is submitted from a fork. No release tag has been created.