Repository navigation
merge queue: checking #19155 on release/v3.8.53 (627e6e7), stacked on #19099, #19096 and #19156 - #19158
Closed
mergify[bot] wants to merge 13 commits into
Closed
merge queue: checking #19155 on release/v3.8.53 (627e6e7), stacked on #19099, #19096 and #19156#19158mergify[bot] wants to merge 13 commits into
mergify[bot] wants to merge 13 commits into
Conversation
Provider dispatch let fetch follow redirects automatically. The SSRF string guard and the connect-time DNS-rebinding guard saw only the first URL, so a provider host (or a base URL an actor controls) could answer with a 3xx to loopback or cloud metadata. On 307/308 the POST body and the provider API key went to that target too. dispatchGuarded now dispatches with redirect "manual" and follows up to 5 hops itself. Each Location is resolved against the current URL and passes the same string guard and connect-time guard as the first request. Credential headers are dropped when the origin changes. Method rules follow the Fetch standard. Callers that pin a redirect mode (strict model validation uses "error") keep it. The wreq TLS transport now honours a caller redirect mode instead of always following.
assertDispatchUrlAllowed returned early for local and self-hosted providers, before any check. The guard policy says cloud metadata stays blocked in every mode, and the webhook guard does block it. A local provider with a base URL on the link-local metadata address therefore sent its POST and stored key there. Exempt providers now still run the non-metadata check. Loopback and LAN base URLs stay allowed for them.
Dedup shares one upstream call and its response object between every request landing on the same hash, so the hash must answer not only "who is asking" but "which connection was selected to answer". It carried the API key id only: two identical non-streaming requests from the same key, pinned to different accounts, joined the first request's in-flight call, so the second pin was silently ignored and its response header still named a connection that never served it. Add the selected connection id to the hash namespace, alongside the API key id. Identical requests that select the same connection still join; requests pinned to different connections each reach their own account. Rotation inside the pipeline remains excluded from dedup through the existing first-attempt-only allowDedup gate.
The API reference documents x-omniroute-connection as a strict pin: the pinned connection is used exclusively and a failure records its cooldown without rotating to a sibling. The outer retry loop honours that, but the in-pipeline account rotation (Codex 429, Antigravity 422) re-selected any sibling account, because the forced connection id never reached the response-leg policy builders. chatCore now passes forcedConnectionId to both builders and allowAccountRotation is false when a pin is present. Unpinned requests still rotate.
GitHub fills started_at while a job still waits in the queue, so an amd64 job stuck for 13 h read as 1,596 spent minutes.
At 40 ms a loaded runner misses the budget before the job starts and the limiter correctly times it out, which dequeued an unrelated PR.
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.
Note
This is a merge queue draft opened by Mergify. Nobody needs to act on it.
Mergify opened it for batch binding-marron-2xgtkn of the
releasequeue, to test #19155 before it merges intorelease/v3.8.53. Pushing to this branch or closing this pull request removes #19155 from the queue.What this draft tests
Mergify checks that #19155 still passes CI once combined with everything queued ahead of it. CI runs on this draft's code, built in this order:
release/v3.8.53at627e6e78bec876The check is speculative: it assumes the pull requests ahead will merge, so it starts without waiting for them.
⏳ Where it stands: being checked
CI is running on this draft.
Waiting for
#check-success>=1check-success=Gate / CIcheck-success=Gate / Qualitycheck-success=Merge integrity (changelog + generated skills)Follow the
releasequeue in the dashboardWhat happens next
release/v3.8.53and closes this draft.checks_timeout), Mergify removes #19155 from the queue and closes this draft.Tip
A red check is not necessarily caused by this batch. These checks run on a tip that also carries the commits of the 3 pull requests ahead, so a failure here can come from them as much as from #19155. See only this batch's changes.
Queued ahead of this batch
These pull requests entered the queue before this batch and are not part of it.
Metadata for CI tooling, read by
mergify ciRequired conditions of queue rule
releasefor merge#check-success>=1check-success=Gate / CIcheck-success=Gate / Qualitycheck-success=Merge integrity (changelog + generated skills)#check-pending=0github-review-approved[🛡 GitHub repository ruleset ruleRequire PR on default branch]#check-failure=0#check-failure=1check-failure=Build (advisory)Required conditions to stay in the queue
-conflict-draft-head~=^fix/relay-integration-candidate--label=integration-reviewedbase~=^release/v\d+\.\d+\.\d+$github-review-approved[🛡 GitHub repository ruleset ruleRequire PR on default branch]label=queue