Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I4222 — A forge reply cut off on its way is asked again

When gh reports a forge reply that was cut off ('unexpected end of JSON input'), the integration forge counts it as an outage and asks again within its bounded backoff.

PŘIPRAVENO vlna 0 · p0 · profil implementation · bezpečné paralelně

Součást ci-critical-path — Kritická cesta od změny k jejímu verdiktu a od mergi k ověřenému nasazení běží za tepla pod minutu.

Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I4222 bude přijato.

Cíl

When gh reports a forge reply that was cut off ('unexpected end of JSON input'), the integration forge counts it as an outage and asks again within its bounded backoff.

Proč

Master's pages runs went red twice in ui-snapshot, step 'the forge, observed', exit 12, for this one cause. Run 40086406838 (10:41Z) failed on the declarations GraphQL query at -F n=50 with 'failed: unexpected end of JSON input'. Run 40093453442 (12:38Z) failed the same way on 'gh pr list --state open --limit 500 --json ...,body,statusCheckRollup,...'. retry::transient matched timeouts, 5xx, rate limits, resets and EOFs, but not gh's wording for a cut-off reply, so the first truncation failed the whole observation and the site could not publish.

Aktuální stav

A cut-off reply is taken as the forge's answer: gh_retrying returns it at once and the observation fails with exit 12.

Cílový stav

'unexpected end of JSON input' is transient, retried with the forge's backoff (four attempts, 2/4/8 s) and reported with its attempt count if it does not stop. Case 742 proves a list cut off once is asked again and the observation is recorded.

Rozsah

  • apps/majordomus-cli/src/integration/retry.rs
  • apps/majordomus-cli/src/integration/forge.rs
  • test/cases/742_only_an_outage_is_asked_again.sh
  • .ai/repo/project/issues/I4222.yaml

Mimo rozsah

  • Replacing gh pr list with a paged GraphQL read of its own; gh already pages it at a hundred
  • Retrying a merge: a merge that timed out may have landed, and it is still never asked again
  • A smaller declarations page: the size n=50 is pinned by twelve cases' scripted forges (861, 928-939), and the gh pr list cut-off is not a page-size matter; the retry covers both reads

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • retry::transient holds 'unexpected end of JSON input' as an outage; a 401, a 404 and a refusal are still answers
  • Case 742: a pr list cut off once is asked exactly twice, the refresh exits 0 and records the observation; the four outage and refusal sections still hold

Validace

  • cargo test --lib integration::retry integration::forge::tests::the_forge_is_asked_exactly_this
  • bash test/run.sh 742_only_an_outage_is_asked_again

Požadované důkazy

  • sada testů

Důkazy

Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.

Riziko

A forge that keeps cutting replies off now takes about 14 s of backoff before the observation fails, as for any outage.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
—

Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.

Canonical record: .ai/repo/project/issues/I4222.yaml. Read it back with majordomus plan show I4222.

Prohledává názvy a popisy všech stránek, které tento web publikuje.