Skip to content

fix(dashboard): report headers-wait and client aborts outside transport failures - #15248

Merged
diegosouzapw merged 1 commit into
diegosouzapw:release/v3.8.52from
maxmad64bis:fix/proxy-health-slow-abandoned
Oct 6, 2026
Merged

diegosouzapw merged 1 commit into
diegosouzapw:release/v3.8.52from
maxmad64bis:fix/proxy-health-slow-abandoned

Conversation

@maxmad64bis

@maxmad64bis maxmad64bis commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ base-red inherited: #15306

Summary

Slow proxies waiting on response headers showed the same transport rate as dead proxies: the health aggregation counted every failed row without an upstream status as a transport failure, including deliberate abandonments after the headers-wait threshold and client-side aborts. Those two categories are now excluded from transport failures and reported as separate counters (slowAbandoned, clientAborted), so the transport rate reflects genuine transport health. The new predicates are NULL-safe, so legacy rows without a marker, connection-test rows, and rows with an upstream status keep their previous path.

Related Issues

Validation

  • Change type: UI
  • Focused tests and category gates from the golden path
  • npm run lint — ESLint on the touched files is clean; the full run is red on the base (🔴 Release branch not green: release/v3.8.52 #15306).
  • Reconciled with the current active release base; focused checks rerun afterward — PR is MERGEABLE (no conflict); realignment only when conflicting
  • Production-code changes include a new or updated automated test in this PR

Tests Added Or Updated

  • tests/unit/db-proxies-ventilated.test.ts: extended the seed helper with attempt_issue/error columns (defaulting to null, so older cases are unchanged); 6 new cases — headers-wait abandonment, abandoned client abort, served client abort, abandoned connection error, long-ceiling timeout, and a mixed transport-rate check.
  • tests/unit/db-proxies-crud.test.ts: the exact-match suite now expects slowAbandoned and clientAborted at zero.

Coverage Notes

  • src/lib/db/proxies.ts: new slow_abandoned/client_aborted aggregates plus the narrowed transport_failures predicate, all NULL-safe — covered by the 6 new ventilated cases plus the exact-match case (fail without the fix, pass with it).
  • src/app/(dashboard)/dashboard/settings/components/ProxyHealthCell.tsx: additive read of the two new counters, defaulting to zero.
  • src/app/(dashboard)/dashboard/settings/components/proxyRegistryConstants.ts: HealthInfo extended with slowAbandoned/clientAborted.
  • src/i18n/messages (en + all locales): three new keys (slowAbandoned, clientAborted, slowAbandonedHint), no missing values.

Reviewer Notes

  • Behavior: The 67 src/i18n/messages files carry the 3 new flat keys, zero __MISSING__; vi.json is a pure 3-line addition. Text matching is used because the journal keeps only the message (the OPENCODE_HEADERS_WAIT_TIMEOUT code is not persisted on the row).
  • Merge: This PR shares no files with other open PRs.
  • Follow-up: If text-based matching is rejected during review, the discriminant will move to a structured marker or nullable column, with the same two counters and the same exclusion rule; the cell display stays unchanged.

@maxmad64bis
maxmad64bis marked this pull request as draft October 3, 2026 01:16
@maxmad64bis
maxmad64bis force-pushed the fix/proxy-health-slow-abandoned branch from a28fa0b to 405b9e9 Compare October 3, 2026 01:17
@maxmad64bis
maxmad64bis marked this pull request as ready for review October 3, 2026 01:41
@diegosouzapw
diegosouzapw merged commit 3156744 into diegosouzapw:release/v3.8.52 Oct 6, 2026
118 of 166 checks passed
@maxmad64bis
maxmad64bis deleted the fix/proxy-health-slow-abandoned branch October 7, 2026 20:37
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.

fix(backend): per-proxy transport rate counts headers-wait abandonments as transport failures

2 participants