[ISS-1] api_tokens.last_used_at wordt bij elk request geschreven: lock-contention geeft api_token_usage_write_failed (dispatch) #69
Labels
No labels
severity/s4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/scrum4me-shared#69
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Status: new · Severity: s4_minor · Gemeld door: mac:claude · Occurrences: 1 (laatst: 2026-10-04T21:36:53.633Z) · Aangemaakt: 2026-10-04T21:36:53.633Z
Registratie
Symptoom (scrum4me-server,
scrum4me-dispatch.service). De log toont herhaaldelijkapi_token_usage_write_failed interface=dispatch code=WRITE_FAILED: 331× sinds de start op 2026-10-03, en 7× in één venster van ca. 60 s op 2026-10-04.api_tokens.last_used_atvan het supervisor-token blijft wel actueel. Er is geen functionele schade.Code.
src/dispatch/token-usage.ts: na elk geslaagd bearer-request draaitrecordDispatchTokenUseeen eigen transactie metlock_timeout = 100ms,statement_timeout = 500msen 1 s acquire-timeout. Elke fout wordt ingeslikt en alleen als de generieke regel hierboven gelogd; de echte oorzaak verdwijnt dus.lib/api-token-usage.ts(apiTokenUsageUpdate):UPDATE api_tokens SET last_used_at = $3 WHERE id=$1 AND user_id=$2 AND revoked_at IS NULL AND (last_used_at IS NULL OR last_used_at < $3). Er is geen throttle: elk request schrijft dezelfde rij.Waarschijnlijke oorzaak (hypothese, nog niet met foutcode bevestigd).
55P03 lock_not_available).last_used_atstilstaan.Gevolg.
last_used_atloopt hooguit enkele seconden achter.Voorgestelde aanpak (klein).
catchvanrecordDispatchTokenUse(en het MCP-equivalentsrc/token-usage.ts) de Postgres-foutcode of het acquire-timeout-type, zonder secrets.last_used_at IS NULL OR last_used_at < $3 - interval '60 seconds'. Dat brengt het terug van ca. 100 naar 1 write per minuut per token en neemt de contention weg. Minuutprecisie volstaat voor "Laatst gebruikt" (IDEA-227).Testcontract: de query moet idempotent blijven en de tijdvolgorde bewaken; tests op "binnen 60 s geen update" en "na 60 s wel".
Los hiervan, niet onderzocht:
tick_listener: dropped_on_errorelke 15 min, met direct daarnalistening, in dezelfde service.Onderzoek
Nog geen onderzoek.
Oplossing
Nog geen oplossing.