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.

I2156 — Pomalý nebo mlčící HTTP klient nemůže zablokovat pracovní vlákno serveru

Stanovit deklarovaný termín pro čtení hlavičky a těla každého požadavku, spojení, které ho nestihne, zavřít a započítat a držet čas handleru mimo workery, které potřebuje sonda.

HOTOVO vlna 0 · p1 · profil implementation · běží samostatně

Součást failure-is-visible — Každé selhání, které může runtime potkat, je omezené, testované nebo uvedené a mění zdraví, které hlásí.

Cíl

Stanovit deklarovaný termín pro čtení hlavičky a těla každého požadavku, spojení, které ho nestihne, zavřít a započítat a držet čas handleru mimo workery, které potřebuje sonda.

Proč

HTTP server má čtyři workery (apps/majordomus-cli/src/http/server.rs:23) a čte těla požadavků bez deadline (apps/majordomus-cli/src/http/server.rs:208-222). Čtyři klienti, kteří otevřou spojení a posílají pomalu, drží každého workera; sonda lease pak čeká za nimi (I2126) a zdravý server může být převzat. Omezená čekání existují jen na straně klienta: PROBE_TIMEOUT, BUSY_GRACE a JOIN_TIMEOUT (apps/majordomus-cli/src/lease.rs:43-62) a REQUEST_TIMEOUT linku 5 s (apps/majordomus-cli/src/mesh/link.rs:76). Kontroly liveness-check a step-bound pokrývají jen shell a žádný test nemá pomalého klienta. Výchozí audit z 2026-10-09 na masteru 1fb8d6be44, mezera selhání 5 a řádek pomalého peera.

Aktuální stav

Každý klient, který dosáhne na port, může zaměstnat pracovníka na neomezenou dobu.

Cílový stav

Čtení požadavku má limit deklarovaný vedle časování lease v policy.yaml server:, spojení, které ho nestihne, se uzavře a započítá v diagnostice serveru a čas handleru je omezen nebo přesunut mimo workery požadavků.

Rozsah

  • apps/majordomus-cli/src/http/server.rs
  • apps/majordomus-cli/src/lease.rs
  • apps/majordomus-cli/src/policy.rs
  • .ai/repo/policy.yaml
  • share/schemas/majordomus/policy
  • apps/majordomus-cli/tests/http_serve.rs
  • docs/MCP.md

Závislosti

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

Kritéria přijetí

  • Čtyři klienti, kteří každý posílají jeden bajt za sekundu, nedrží žádného workera po deklarovaném limitu a pátý klient dostane odpověď
  • Limit je deklarovaný klíč politiky a počet spojení jím uzavřených se objevuje v diagnostice serveru

Validace

  • bin/majordomus plan validate
  • cargo test --test http_serve --test mcp_shared

Požadované důkazy

  • slow_client_released_test

Důkazy

pokrývátypcommandvýsledeku commitu
slow_client_released_testtestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test http_slow_client slow_client_released_testtest result: ok. 1 passed; 0 failed (run 2026-10-14 between 07:40Z and 07:58Z on master ce5959db59)ce5959d

Časová osa

zahájeno
2026-10-14T08:01:59Z
ověřeno
—
dokončeno
2026-10-14T08:02:05Z

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.

Kanonický záznam: .ai/repo/project/issues/I2156.yaml. Přečtěte ho zpět pomocí majordomus plan show I2156.

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