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.

I2126 — Server zaneprázdněný voláním nástrojů se nikdy nepřebírá, jako by byl mrtvý

Zařídit, aby sonda lease dosáhla na server, jehož všichni HTTP workeři právě provádějí volání nástrojů, a aby prokázala, že dosáhla držitele lease, takže klientovi, který rozhoduje, zda vlastník žije, neodpoví plný pool workerů ani jiný proces.

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

Součást runtime-lifecycle — Jeden použitelný server na checkout se spouští, připojuje, zastavuje a hlásí svůj stav bez souběhů a skrytých zabití.

Cíl

Zařídit, aby sonda lease dosáhla na server, jehož všichni HTTP workeři právě provádějí volání nástrojů, a aby prokázala, že dosáhla držitele lease, takže klientovi, který rozhoduje, zda vlastník žije, neodpoví plný pool workerů ani jiný proces.

Proč

Sonda, kterou klient posílá před převzetím, je GET / (apps/majordomus-cli/src/lease.rs:896-925), obsluhovaná týmiž čtyřmi workery (apps/majordomus-cli/src/http/server.rs:23), které synchronně spouštějí každé tools/call. Čtyři volání nástrojů, která přesáhnou timeout sondy plus odklad obsazenosti (asi 12 s, apps/majordomus-cli/src/lease.rs:43-62, 555-568), způsobí, že zdravý server vypadá zaseknutý, a další klient, který se spustí, převezme jeho lease. is_own (apps/majordomus-cli/src/lease.rs:429) opravuje jen server sondující sám sebe. GET / je také nejdražší trasa: rozkládá index a každý povrch, zatímco /api/v1/live a /api/v1/ready existují (apps/majordomus-cli/src/capability/builtin/health.rs:691,702) a sonda je nepoužívá. Sonda porovnává name, repository_id a leaseholder (apps/majordomus-cli/src/lease.rs:902-905), ale ne token lease, pid ani started_at, a GET / je nevystavuje. Výchozí audit z 2026-10-09 na masteru 1fb8d6be44, mezera životního cyklu 3 a řádek fencingu.

Aktuální stav

apps/majordomus-cli/tests/lease_busy.rs pokrývá živého vlastníka, který odpovídá pozdě, a toho, který neodpovídá nikdy; žádný test nezaměstná každého pracovníka, zatímco volí druhý klient, a žádná sonda token neporovnává.

Cílový stav

Pracovníci jen přijímají; každý požadavek se vyřizuje na vlastním vlákně až do MAX_HANDLERS (64), takže sonda lease dostane odpověď, zatímco běží pomalá volání nástrojů, a stop čeká ohraničenou dobu na předané požadavky. Odložená část, trasa sondy živosti nesoucí digest tokenu lease a kontrola, která odmítne server s odlišným tokenem, je I2700.

Rozsah

  • apps/majordomus-cli/src/lease.rs
  • apps/majordomus-cli/src/http/server.rs
  • apps/majordomus-cli/src/http/router.rs
  • apps/majordomus-cli/src/capability/builtin/health.rs
  • apps/majordomus-cli/tests/lease_busy.rs
  • test/cases
  • docs/MCP.md

Závislosti

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

Co na tom čeká

Kritéria přijetí

  • Při čtyřech probíhajících voláních nástrojů, z nichž každé přesáhne timeout sondy plus nečinnou toleranci, se pátý klient připojí k běžícímu serveru a soubor lease zůstane beze změny

Validace

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

Požadované důkazy

  • busy_pool_is_not_taken_over_test

Důkazy

pokrývátypcommandvýsledeku commitu
busy_pool_is_not_taken_over_testtestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test http_busy_probe busy_pool_is_not_taken_over_testtest result: ok. 2 passed; 0 failed (whole file) (run 2026-10-14 12:00-12:15Z on master 2ca25bb9cf plus this change)2ca25bb

Časová osa

zahájeno
2026-10-14T12:15:43Z
ověřeno
—
dokončeno
2026-10-14T12:16:23Z

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/I2126.yaml. Přečtěte si ho zpět pomocí majordomus plan show I2126.

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