Size: a a a

2021 June 30

I

Intrade in pro.jvm
Я бы сделал на стороне СУБД процедуру и через неё всё проверял и обновлял. Одновременно решило бы ряд проблем.
источник

E

Etki in pro.jvm
Это значит что он вместо лока просто сделает роллбэк при верификации в момент коммита. Функционально со стороны приложения будет ровно одно и то же, роллбэк.
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Исключение при коммите будет. И его придется ловить и обрабатывать
источник

E

Etki in pro.jvm
И там и там будет роллбэк при попытке параллельного обновления записи. Писать что в одном случае будет роллбэк-исключение, а в другом нет - это не понимать что такое уровни изоляции.
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Поэтому лучше взять pessimistic lock на время обновления остатков
источник

E

Etki in pro.jvm
Обоснуй чем лучше
источник

E

Etki in pro.jvm
Ты просто завернешь операцию "попробуем зарезервировать, если там столько есть" в лишний лок.
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Тем, что ты избавишь себя от исключений при коммите. А если транзакция короткая, то и на перформанс это не особо повлияет
источник

E

Etki in pro.jvm
Зачем мне избегать роллбэка? Зачем мне дублировать функционал бд?
источник

E

Etki in pro.jvm
Роллбэк это нормальная операция, не ошибка.
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
локи - это функционал бд
источник

E

Etki in pro.jvm
Транзакции это функционал бд, который ты зачем-то дублируешь доками.
источник

E

Etki in pro.jvm
Мы ещё даже не добрались что ручные локи это всегда опасность повесить систему.
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
транзакции - это транзакции, локи - это локи. На блокировочниках у тебя и все транзакции на локах сделаны
источник

I

Intrade in pro.jvm
Я тоже не вижу проблемы в роллбэке. По мне так нормальная ситуация, а удф ещё может вернуть вменяймый результат, который можно обернуть в некий дто и выплюнуть на UI в виде ошибки.
источник

E

Etki in pro.jvm
Ну вот, и ты делаешь сейфти механизм поверх сейфти механизма.
источник

E

Etki in pro.jvm
Давай так: как твоя система поведет себя, если лок уже взят?
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
будет ждать
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
в постгресе, кстати есть штатный select for update, который как раз лочит строки
источник

E

Etki in pro.jvm
То есть ты повесишь приложение наглухо и это типа более оптимальный вариант?
источник