Skip to content

fix(terminology): the HTS client must fail fast, not hang behind a proxy - #469

Open
angela-helios wants to merge 1 commit into
mainfrom
fix/hts-client-no-proxy
Open

fix(terminology): the HTS client must fail fast, not hang behind a proxy#469
angela-helios wants to merge 1 commit into
mainfrom
fix/hts-client-no-proxy

Conversation

@angela-helios

@angela-helios angela-helios commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Closes #470

The test_in_modifier_fails_open_on_hts_unavailable failure on PR #466's CI run (789s, then 500 instead of fail-open) is unrelated to that PR — it is the runner-proxy signature from #449 biting a third surface. The test points :in at a closed local port and expects connection-refused within the client's 10s timeout; on pool runners whose no_proxy uses CIDR ranges (which reqwest cannot parse), the request detours through the egress proxy and hangs for minutes.

Three-part hardening of the terminology client:

  • .no_proxy() — the HTS is a configured internal endpoint; egress proxying it is never right, and it silently breaks the fail-open semantics.
  • .connect_timeout(2s) — an unreachable server should fail in milliseconds, not consume the whole request budget.
  • The silent unwrap_or_default() fallback is gone: it could discard both timeouts when the builder errs, which is exactly the no-timeout hang observed. A client build failure is a startup-visible misconfiguration.

All 4 terminology_integration tests green locally (the unavailable-HTS one now completes in milliseconds).

test_in_modifier_fails_open_on_hts_unavailable points :in at a closed
local port and expects fail-open within the 10s request timeout. On
pool runners whose no_proxy excludes private ranges via CIDR — which
reqwest cannot parse — the request detoured through the egress proxy
and hung for minutes (789s in PR #466's run) before surfacing as a 500.
The terminology server is a configured internal endpoint: the client now
bypasses proxies outright, adds a 2s connect timeout so an unreachable
server fails in milliseconds, and drops the silent unwrap_or_default()
fallback that could discard both timeouts when the builder errs.
@codecov

codecov Bot commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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.

terminology: the HTS client hangs for minutes behind an egress proxy instead of failing fast

2 participants