Как я играла и проиграла race condition
Есть фича покупка услуги. Захотелось мне ее потестить на race condition. Кто не знает что такое race condition - это ошибка проектирования многопоточной системы при которой работа зависит от того, в каком порядке выполняются части кода. Подробнее читать тут и тут.
Что обычно приходит на ум?
* Положить на кошелек сумму 1-2 услуг и попробовать списать больше, загнав аккаунт в отрицательный баланс.
* Если транзакция не связана напрямую с заказом, а есть некоторая проверка "оплачено", то попробовать за 1 операцию получить 2 услуги
Решено - сделано. Но тут случилась обратная ситуация и у меня списали 4 раза за 1 услугу. Переиграла себя и уничтожила. Обратно, как я хотела изначально сделать, не получилось. Ушла без баунти голодной. Как-то стало обидно и я пошла объяснять техподдержке проблему: смотрите "1 услуга, а списаний 4 в одно и тоже время". Мы переписывались около 1.5 месяца с учетом лага ответов в почти 1 неделю и мне дали промокод на 20% на следующую покупку. Деньги не вернули. Что ж.
Есть фича покупка услуги. Захотелось мне ее потестить на race condition. Кто не знает что такое race condition - это ошибка проектирования многопоточной системы при которой работа зависит от того, в каком порядке выполняются части кода. Подробнее читать тут и тут.
Что обычно приходит на ум?
* Положить на кошелек сумму 1-2 услуг и попробовать списать больше, загнав аккаунт в отрицательный баланс.
* Если транзакция не связана напрямую с заказом, а есть некоторая проверка "оплачено", то попробовать за 1 операцию получить 2 услуги
Решено - сделано. Но тут случилась обратная ситуация и у меня списали 4 раза за 1 услугу. Переиграла себя и уничтожила. Обратно, как я хотела изначально сделать, не получилось. Ушла без баунти голодной. Как-то стало обидно и я пошла объяснять техподдержке проблему: смотрите "1 услуга, а списаний 4 в одно и тоже время". Мы переписывались около 1.5 месяца с учетом лага ответов в почти 1 неделю и мне дали промокод на 20% на следующую покупку. Деньги не вернули. Что ж.