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.

I2127 — Server, který ztratil lease, předá své relace dál a skončí

Přimět server, který ztratil lease nebo byl v něm nahrazen, aby na své stávající relace MCP odpovídal session-not-found po omezené odkladné lhůtě pro rozpracované požadavky, takže jejich mosty se znovu připojí k aktuálnímu držiteli leasu a starý proces dojde ke svému konci.

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

Přimět server, který ztratil lease nebo byl v něm nahrazen, aby na své stávající relace MCP odpovídal session-not-found po omezené odkladné lhůtě pro rozpracované požadavky, takže jejich mosty se znovu připojí k aktuálnímu držiteli leasu a starý proces dojde ke svému konci.

Proč

Ztracený nebo nahrazený server dál obsluhuje své stávající relace 'a končí s nimi' (apps/majordomus-cli/src/http/mcp.rs:113-118). Mosty pingují každých 20 s (apps/majordomus-cli/src/mcp/bridge.rs:19) a smyčka serve počítá přemostěné relace jako připojené (apps/majordomus-cli/src/commands/serve.rs:136-146), takže server běžící se nahrazeným kódem nikdy nezanikne nečinností, dokud žije jakýkoli most, a jeho klienti zůstávají na starém kódu, dokud neskončí. docs/MCP.md:48 (ping) a :50 (server končí, když odejde poslední peer) společně činí nahrazený server nesmrtelným; :118 říká jen, že 'proces s nimi končí'. Základní audit z 2026-10-09 na master 1fb8d6be44, mezera životního cyklu 4 a drift 7.

Aktuální stav

Po nahrazení dostane nový initialize 409 lease_lost (apps/majordomus-cli/src/http/mcp.rs:119-128, apps/majordomus-cli/tests/lease_lost.rs::a_server_that_lost_its_lease_says_so_and_takes_on_nobody_new), ale relace otevřené před ním se obsluhují bez omezení.

Cílový stav

lease::lost zaznamená kdy; po deklarovanou nečinnou toleranci zastaralý server odpovídá svým relacím, poté každou uzavře při jejím příštím požadavku odpovědí 404 session_not_found, na niž most odpoví otevřením relace, odmítnutím 409 lease_lost a zvolením aktuálního serveru; serve skončí, když nedrží žádnou relaci (superseded_and_alone). Probíhající požadavek se dokončí tam, kde začal. Neměřeno zde: celá klientská cesta přes skutečný most k novému držiteli lease (cesta 404, o niž se opírá, je stávající cestou mostu, testovanou v mcp_shared).

Rozsah

  • apps/majordomus-cli/src/http/mcp.rs
  • apps/majordomus-cli/src/shared.rs
  • apps/majordomus-cli/src/commands/serve.rs
  • apps/majordomus-cli/src/mcp/bridge.rs
  • apps/majordomus-cli/tests/lease_lost.rs
  • apps/majordomus-cli/tests/mcp_shared.rs
  • docs/MCP.md

Závislosti

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

Co na tom čeká

Kritéria přijetí

  • Přemostěný klient připojený k serveru, jehož lease je poté převzat, dostane odpověď od nového držitele leasu v deklarované lhůtě, aniž by se ztratil požadavek
  • Nahrazený proces sám skončí poté, co se jeho relace přesunuly, zatímco mosty ještě žijí
  • Požadavek rozpracovaný v okamžiku nahrazení dostane vlastní odpověď, ne 404
  • docs/MCP.md uvádí odklad a to, že ztracený server končí

Validace

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

Požadované důkazy

  • lost_server_hands_sessions_on_test
  • superseded_server_exits_test

Důkazy

pokrývátypcommandvýsledeku commitu
lost_server_hands_sessions_on_testcigh run view 38626102499 --log --job 116065669794 (validate na masteru e8505a431d, rust (3): cargo test --test lease_lost)lost_server_hands_sessions_on_test jmenuje test, který pod tímto názvem nikdy nebyl napsán; dokázáno tests/lease_lost.rs a_server_that_lost_its_lease_says_so_and_takes_on_nobody_new ... ok v běhu validate 38626102499 (success) na e8505a431d; dodáno 5bb27f42145c0e3585
superseded_server_exits_testcigh run view 38626102499 --log --job 116065669794 (validate na master e8505a431d, rust (3): cargo test --test cov_runtime_a_server)superseded_server_exits_test names a test never written under that name; proved by tests/cov_runtime_a_server.rs an_unbounded_server_whose_lease_is_taken_over_ends_by_itself ... ok in validate run 38626102499 (success) at e8505a431d; delivered by 5bb27f42145c0e3585

Časová osa

zahájeno
2026-10-14T22:12:56Z
ověřeno
2026-10-14T22:13:14Z
dokončeno
2026-10-14T22:13:35Z

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

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