fix(db): val terug op de presence-instance-id i.p.v. een unknown-label #116
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/db-label-instance-fallback"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Vervolg op #115.
Het probleem dat #115 zichtbaar maakte
Na de uitrol droegen de vloot-workers wel een
application_name, maar de waarde wass4m-mcp:unknown-host:unknown-model— aanwezig en tóch niet toewijsbaar.S4M_SERVER,S4M_MODELenSCRUM4ME_WORKER_INSTANCE_IDzijn in de worker-containers alle drie leeg en komen in de live compose helemaal niet voor.Waarom die env-vars zetten de verkeerde oplossing is
Twee routes lagen voor de hand en zijn allebei onveilig:
S4M_SERVER+S4M_MODELzetten. Die twee vormen samen een queue-adres, niet alleen een label. Krijgen de workersscrum4me-server+claude, dan draaien ze op het adres van een bestaande deelnemer en kan een job diequeue_nextaanroept berichten claimen die voor iemand anders bedoeld zijn. Stil, en pas merkbaar als een bericht nooit beantwoord wordt.SCRUM4ME_WORKER_INSTANCE_IDper service pinnen. Dat is de registry-sleutel:registerWorker()gebruikt hem enworkerHeartbeatdoetclaudeWorker.updateMany({ where: { token_id, instance_id } }). Een vaste waarde per service laat gescalede replica's (worker-ideadraait op 2) als één worker registreren, met een heartbeat die meerdere rijen tegelijk raakt.Wat deze PR doet
getInstanceId()bestond al en levertmcp-<hostname>-<pid>: uniek per proces, in een container is de hostname de container-id, en het vereist geen enkele nieuwe configuratie.applicationName()valt daarop terug wanneer er geen queue-identiteit is.Resultaat: processen mét queue-identiteit houden het leesbare
s4m-mcp:mac:claude; de vloot-workers krijgens4m-mcp:mcp-<container>-<pid>, wat per proces te onderscheiden is en niet per service samenvalt.Het commentaar in de module legt beide valkuilen vast, zodat de volgende lezer niet alsnog die env-vars zet.
Verificatie
tsc --noEmit: 0 fouten.vitest run: 183 passed, 3 skipped, geen failures.Gedraaid met submodule geïnitialiseerd en
prisma generateuitgevoerd, zoals CI het doet — zonder die stap geeft een verse clone honderden ruis-fouten die niets met de wijziging te maken hebben.