Проблема отправки ставки со стороны аукциона
Кейс проблемы следующий:
Хронограф аукционов запустил отправку бидов в процедуры
Пока шла отправка данных, была внесена ставка
Процедура приняла оправленные биды
Хронограф аукционов попытался обновить аукцион и отправить его в архив. В этот момент он узнал что обьект аукционов был изменен и свалился с ошибкой ConcurrencyError
Потому в процедуре не полные биды, на повторную отправку бидов, процедура ответила что уже менять нельзя, так как процесс аукционов для нее завершился.
Получилось стандартное состояние гонки.
Последовательность отправки данных на процедуру, а потом внесение изменений в базу аукционов была выбрана для устранения проблем, если процедура не сможет корректно принять данные.
На данный момент я вижу решение такой проблемы применением концепции двухфазного комита при обшении между процедурами и аукционами. То есть:
- Аукцион отправляет данные на процедуру
- Процедура сообьщяет что приняла данные
- Аукцион обновляет данные в своей базе
- Аукцион отправляет сообшение что все прошло ок
- Процедура сохраняет данные к себе в базу