По вашему посту видно, что работа с сервисами где учитывают деньги вас обошла стороной. Может, оно и к лучшему. Не поверите, но не просто так сделали построчную блокировку и транзакции, не только для того, чтобы были deadlock-и и второе окно тормозило. По дефолту на session file тоже ставится лок и вторая страница не открывается. Это так, на всякий случай.
юзер жмет на кнопку «activate» — мы лочим баланс, холдим деньги и переведим запрос в статус TO_PROCESS
далее 2 таска:
-лок и смена статуса на что-то вроде PROCESSING + коммит + api call
-получение колбека либо опрос сервиса и перевод запроса в конечное состояние COMPLETE
но всё равноу нас должен быть либо способ узнать статус на удаленном сервисе либо получить обратный звонок от него. Иначе на любом этапе можно потерять данные, слепо дернуть api без обратной связи безопасно не получится
в ситуации выше хотелось лишь понять, знает ли кандидат как пользоваться одной из фич innodb а именно построчным локом.
для звонка во внешний апи вариантов тут несколько:
-до звонка уменьшить баланс и закоммититься
-без построчного лока попытаться захватить запись способом вроде " update requests set status=%pid where status=0 and id=123" и продолжить
далее 2 таска:
-лок и смена статуса на что-то вроде PROCESSING + коммит + api call
-получение колбека либо опрос сервиса и перевод запроса в конечное состояние COMPLETE
но всё равноу нас должен быть либо способ узнать статус на удаленном сервисе либо получить обратный звонок от него. Иначе на любом этапе можно потерять данные, слепо дернуть api без обратной связи безопасно не получится
для звонка во внешний апи вариантов тут несколько:
-до звонка уменьшить баланс и закоммититься
-без построчного лока попытаться захватить запись способом вроде " update requests set status=%pid where status=0 and id=123" и продолжить