Skip to content

fix(web): map queue/boot timeouts to SERVICE_UNAVAILABLE - #1111

Open
gildesmarais wants to merge 2 commits into
mainfrom
feat/timeout-phase-error-mapping
Open

fix(web): map queue/boot timeouts to SERVICE_UNAVAILABLE#1111
gildesmarais wants to merge 2 commits into
mainfrom
feat/timeout-phase-error-mapping

Conversation

@gildesmarais

@gildesmaraisgildesmarais commented Aug 28, 2026

Copy link
Copy Markdown
Member

What changed

  • ErrorClassifier: map RequestTimedOut with timeout_phase of queue/boot to existing SERVICE_UNAVAILABLE (503); work/nil stay GATEWAY_TIMEOUT (504).
  • Runbook/docs: split alert guidance for capacity vs site blame.
  • Specs stub timeout_phase (released html2rss still lacks the reader; validated against current pin).

Why

Users should not see site-blame GATEWAY_TIMEOUT copy when scrape-api timed out in our queue or Chromium boot.

Risk

  • End-to-end activation needs html2rss past 81189aef. respond_to?(:timeout_phase) keeps pre-bump safe (no reader → nil → 504 as today).
  • Rollout: merge scrape-api → release/bump gem → merge web (or path-pin for staging).

Review map

Review map: whole PR is small — start at app/web/errors/error_classifier.rb.

Validation

  • make ready exit 0

Adjacent

Rollout: merge scrape-api → release/bump gem → merge web (web uses respond_to? so pre-bump is safe).

Users should not see site-blame GATEWAY_TIMEOUT copy when scrape-api
timed out in our queue or Chromium boot. Reuse existing 503 decision;
work/nil stay 504. Specs stub timeout_phase (released html2rss ~> 0.27
still lacks the reader; validated against that pin — path gem not
required). Activate end-to-end after bumping html2rss past
81189aefe1cf827b7ff67f376df3bd9804aaa0d5.
Dig timeout_phase from transport_meta and fall back to RequestTimedOut
on the cause chain so Observability matches classifier phase mapping.
Sign up for freeto 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.

1 participant

@gildesmarais