Skip to content

ai-review: model requests intermittently hang ~27.6 min against the Anthropic gateway #43

Description

Summary

Model requests through ANTHROPIC_BASE_URL (https://ai.eduly.com) intermittently hang on the first turn of a stage and return after ~27.6 minutes having done nothing. Six occurrences measured, across three repos and two model IDs.

This is not an ai-review defect. Three fixes were attempted inside the action and all three were falsified by measurement. Filing so it reaches whoever operates the gateway.

Fingerprint

{"turns":1,"costUsd":0,"numToolCalls":0,"durationMs":1654722,"dominantStage":"review"}

The stage log shows a clean init, then silence, then an error result with no body:

06:40:26  {"subtype":"init","model":"claude-sonnet-5"}
          ← 27m35s, zero output
07:08:01  {"subtype":"success","is_error":true,"duration_ms":1654722,
           "num_turns":1,"total_cost_usd":0,"permission_denials_count":0}

The six observations

Run Repo Stage duration_ms
31317613715 github-actions context (haiku-4-5) 1,647,262
lagn A Lagn-App/lagn context + review + retry 1,666,947
lagn B Lagn-App/lagn context + review + retry 1,666,947
31356469199 github-actions context (haiku-4-5) 1,656,307
31360398002 github-actions context (haiku-4-5) 1,658,923
31362834124 github-actions review (sonnet-5) 1,654,722

Spread: 1.2%. A ceiling that tight across different repos, days, and model IDs is a configured timeout expiring, not variable slowness.

What has been ruled out

Hypothesis Ruled out by
HTTP 529 / model overload No 529 appears in any log. The original attribution came from a grep matching the branch name perf/ai-qa-hotfix-529
--fallback-model would recover it Live during run 31317613715; stall happened anyway. A fallback triggers on an overloaded response — this gateway never answers
CLI per-request timeout × SDK retries (~10 min × 3) Run 31356469199 stalled 27m36s with API_TIMEOUT_MS=180000 (3 min). A 3-min timeout cannot produce a 27.6-min stall
Specific to the context stage Run 31362834124 stalled in the review stage with context skipped. The earlier pattern was selection bias — context was simply always the first stage
Specific to a model or model ID Observed on both claude-haiku-4-5 and claude-sonnet-5
Specific to one repo Observed in EdulyCom/github-actions and Lagn-App/lagn

Impact

  • Six killed or wasted jobs, each burning ~28 min of runner time for zero output
  • The lagn runs stalled on three stages serially — 83-minute jobs producing nothing
  • Contributed to the 32 timeout kills measured across 682 consumer review jobs

What is already handled

ai-review fails closed: a stalled stage is continue-on-error, and Publish posts an explicit "inconclusive — re-run required" verdict rather than a false pass. Verified on run 31362834124 — Publish succeeded and the gate job was correctly skipped.

So this does not produce wrong verdicts. It wastes wall-clock and runner minutes, and it blocks CI until a re-run.

What would help from the gateway side

  1. What happens to a request that sits ~27.6 min and returns zero bytes — is there a proxy/LB idle timeout near 1,650,000 ms?
  2. Are these requests reaching the upstream API at all, or terminating at the gateway?
  3. Anything correlating with the trigger — concurrency, cold start, connection reuse?

Reproduction

Intermittent — roughly 6 occurrences in ~25 runs today. Not deterministic. Any ai-review run can hit it; the signature to grep for is ai-review-metrics with "turns":1 and "costUsd":0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions