Два запроса. Один лимит. Один деньги списал, второй тоже.
Это и есть race condition — не баг в коде, а баг в управлении порядком операций.
Для бизнеса это выглядит просто:
- клиент нажал 2 раза;
- сервер не успел зафиксировать состояние;
- система решила, что оба действия «валидны».
Итог всегда в цифрах, не в эмоциях:
1) двойное списание;
2) обход лимита;
3) чужой доступ к ресурсу.
Мини-калькулятор риска:
**ущерб = средний чек × число конфликтов × доля успешных атак**
Если средний чек 8 000 ₽, конфликтов 200 в месяц, успех атаки 5%:
8 000 × 200 × 0,05 = **80 000 ₽ потерь в месяц**.
Главная ошибка — думать, что это «редкий технический кейс».
Нет. Это прямой удар по выручке, P&L и доверию.
И чем выше нагрузка, тем дороже ошибка. ⚠️
Искать надо не только баги, а места, где две операции могут встретиться в одной точке: платежи, лимиты, бонусы, бронь, отмены.
Agency Math Notes
@AgencyMathPro
Два запроса. Один лимит. Один деньги списал, второй тоже.
Этот пост опубликован в Telegram-канале Agency Math Notes. Подписаться можно по ссылке: @AgencyMathPro.