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ě
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á | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| slow_client_released_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test http_slow_client slow_client_released_test | test 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.