Обернуть покупку в транзакцию (race condition) #44
Reference in New Issue
Block a user
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?
Проблема
purchaseService.js:45-108— баланс проверяется и списывается безBEGIN TRANSACTION. При параллельных покупках возможен double-spend.Решение
BEGIN IMMEDIATE TRANSACTION/COMMIT/ROLLBACKUPDATE ... WHERE quantity_in_stock >= ?для атомарного списанияФайлы
src/services/purchaseService.jssrc/services/productService.jsПриоритет: КРИТИЧЕСКИЙ
✅ Реализовано
Файлы:
src/services/purchaseService.js