[PK-65] BE: serialize checkout route v process-local queue #23

Merged
forge-admin merged 1 commit from agent/be-dev/89cda096 into main 2026-05-17 06:04:20 +00:00
Owner

Resolves PK-65 — process-local serialization wrapper okolo prisma.$transaction v checkout route. Tx timer štartuje až po release predchádzajúcej tx, takže 20s budget meria reálne SQL, nie čakanie na lock.

WAL + busy_timeout=15s z PK-62 ostávajú safety net pre externé čítania.

Nové testy: be/tests/checkoutQueue.test.ts (FIFO + recovery po výnimke). Vitest 200/200 zelený.

Resolves [PK-65](mention://issue/d89591bc-7ffd-4e88-8ec2-2e4ba5e3f360) — process-local serialization wrapper okolo prisma.$transaction v checkout route. Tx timer štartuje až po release predchádzajúcej tx, takže 20s budget meria reálne SQL, nie čakanie na lock. WAL + busy_timeout=15s z PK-62 ostávajú safety net pre externé čítania. Nové testy: be/tests/checkoutQueue.test.ts (FIFO + recovery po výnimke). Vitest 200/200 zelený.
Pri 8 paralelnych POST /api/checkout SQLite drzi exklusivny write lock,
ostatne transakcie cakaju v drivere (busy_timeout=15000) a Prisma 20 s tx
timeout sa minie skor, nez sa BEGIN dostane na rad (PK-65 reprodukcia: P2028
po 26 s lock-wait). runSerialized obali $transaction tak, ze dalsi checkout
otvori transakciu az po release predchadzajuceho — tx timer tak meria
realny cas SQL, nie cas cakania na lock.

Reprodukcia v docker compose (16.8 s, 12/13) -> po fixe 27.3 s, 199 passed
+ 1 skipped (test.checkout.ts 1.07 s v containeri).

Co-authored-by: multica-agent <github@multica.ai>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forge-admin/masox-eshop!23
No description provided.