You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Retire the /passthrough/* 410 migration tombstone in the first release after 0.10.0 #1010
0.10.0 removed the implicit /passthrough/:provider/*rest tunnel and left a fixed 410 Gone with error.code: endpoint_removed on unclaimed /passthrough/* paths, so un-migrated callers get a migration pointer instead of a bare 404.
That was scoped to one release. The code says so (crates/aisix-proxy/src/passthrough_route.rs: "the migration pointer beats a bare 404 for one release") and the public docs say so ("answer 410 Gone ... for one release, then become plain 404s").
Due: the first release after 0.10.0 — whatever its number turns out to be. Do not read this as "0.11.0"; the next version may well be 1.0.0. The condition is "one release has shipped since 0.10.0", not a particular number.
What to do
Remove the special-cased 410 branch and let /passthrough/* take the router's normal miss path.
Drop the accompanying WARN and the unresolved-provider metric labels that existed to size un-migrated callers.
Update the docs sentence that promises the 410 for one release.
Check first whether operators still need the pointer — the WARN was added precisely so we could measure that. If un-migrated traffic is still visible in the field, defer deliberately rather than by default.
Filed because this only existed in a code comment and a docs sentence, which is how the previous one of these (#1009) nearly got carried silently.
changed the title [-]Retire the /passthrough/* 410 migration tombstone at 0.11.0[/-][+]Retire the /passthrough/* 410 migration tombstone in the first release after 0.10.0[/+]on Aug 20, 2026
#853 - feat(config): request_body_limit_bytes defaults to 0 = no cap; uniform 413 surface [merged] #982 - feat(passthrough): explicit PassthroughRoute resources replace the implicit provider tunnel [merged] #984 - fix(passthrough): forward-proxy routes may claim reserved prefixes and mirror the whole path [merged] #986 - feat(passthrough): per-request envelope detection, drop protocol/streaming config [merged] #983 - fix(passthrough): OTLP route/identity attribution, route on rejected events, header_key 401 names its header [merged]
📝 Issue Planner
Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.
Create Plan
🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your .coderabbit.yaml:
issue_enrichment:
auto_enrich:
enabled: false
💬 Have feedback or questions? Drop into our discord!
This deadline is now enforced instead of remembered — #1011 put a marker on LEGACY_TUNNEL_GONE:
COMPAT-SINCE: 0.10.0 #1010 — 0.10.0 removed the implicit `/passthrough/:provider/*rest`
tunnel, and a migration pointer beats a bare 404 while un-migrated callers are still out
there; the public docs promise the 410 for one release, then plain 404s.
crates/aisix-core/tests/compat_debt.rs runs in the required rust unit + coverage job and fails every PR once a stable tag with a higher MAJOR.MINOR than 0.10.0 exists — 0.11.0 or 1.0.0, whichever it turns out to be. Release candidates don't count as shipped.
What the gate does not decide is the judgement call in this issue: it forces the question at the deadline, it doesn't answer it. The WARN was added so we could size un-migrated traffic first, and the paired docs sentence still has to be updated by hand — neither is visible to the gate. It also fires only once the next release has already shipped; the aisix-release Phase 0 sweep is what catches this in the release it's due in.
Activity
[-]Retire the /passthrough/* 410 migration tombstone at 0.11.0[/-][+]Retire the /passthrough/* 410 migration tombstone in the first release after 0.10.0[/+]coderabbitai commentedon Aug 20, 2026
🔗 Related PRs
#853 - feat(config): request_body_limit_bytes defaults to 0 = no cap; uniform 413 surface [merged]
#982 - feat(passthrough): explicit PassthroughRoute resources replace the implicit provider tunnel [merged]
#984 - fix(passthrough): forward-proxy routes may claim reserved prefixes and mirror the whole path [merged]
#986 - feat(passthrough): per-request envelope detection, drop protocol/streaming config [merged]
#983 - fix(passthrough): OTLP route/identity attribution, route on rejected events, header_key 401 names its header [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
feat(compat): make time-boxed compat code come due mechanically (#1011)
jarvis9443 commentedon Aug 20, 2026
This deadline is now enforced instead of remembered — #1011 put a marker on
LEGACY_TUNNEL_GONE:crates/aisix-core/tests/compat_debt.rsruns in the requiredrust unit + coveragejob and fails every PR once a stable tag with a higherMAJOR.MINORthan 0.10.0 exists — 0.11.0 or 1.0.0, whichever it turns out to be. Release candidates don't count as shipped.What the gate does not decide is the judgement call in this issue: it forces the question at the deadline, it doesn't answer it. The WARN was added so we could size un-migrated traffic first, and the paired docs sentence still has to be updated by hand — neither is visible to the gate. It also fires only once the next release has already shipped; the
aisix-releasePhase 0 sweep is what catches this in the release it's due in.