169 похожих чатов

Всем привет! В моем приложении есть код, который делает выборку в

бд:
SELECT * FROM participants WHERE name = :name
Далее, при условии отсутствия такого участника, выполняется INSERT INTO ...

Т.к. данные операции не атомарны, это приводит к наличию race condition, который позволяет быстро отправив два последовательных запроса, зарегистрировать одного участника дважды. Псевдокод код воспроизведения такой баги:
let result1 = contestService.handleAddParticipantRequest(
new AddParticipantRequest('iddqd')
);
let result2 = contestService.handleAddParticipantRequest(
new AddParticipantRequest('iddqd')
);

let result1 = await voteResult1;
let result2 = await voteResult2;

expect(result1.isSuccess).to.be.true;
expect(result2.isSuccess).to.be.false;

Может ли кто-то рассказать об основных путях решения такой проблемы? Или может есть какое-то средство в языке/популярная либа для борьбы с этим?

1 ответов

17 просмотров

Сделать name unique

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Карта сайта