Size: a a a

2021 June 30

GV

George Vassilev in pro.jvm
тогда в минус ничего не уйдёт
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Да или лок
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Но etki не хочет лок, а хочет rr
источник

ДР

Даниил Разоренов... in pro.jvm
А почему не делать:
update products
set count=count-1
where count > 0
and id = ?
источник

E

Etki in pro.jvm
Вся история с уровнями изоляции в том, что финальная история транзакций должна иметь возможность быть приведенной к 1 .. N линейных историй, как если бы транзакции применялись по одной.
Уровни изоляции позволяют феномены, те или иные нарушения, с которыми такие истории могут быть построены.
RR не позволяет феномен изменяющейся записи.
Таким образом недопустима ситуация, когда к концу транзакции запись изменил кто-то другой.
Никаких локов, сериалайзаблов и прочего не нужно в помине.
источник

D𝔇

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

ДР

Даниил Разоренов... in pro.jvm
Да
источник

E

Etki in pro.jvm
Там есть critique of ansi sql, очень хорошо прочищает голову по поводу того что это и зачем.
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
При rr ты не увидишь изменения от параллельных транзакций. А приведение к линейной истории - это и есть serializable
источник

E

Etki in pro.jvm
Более того, lock-based субд, mysql в том числе, будут сами брать лок на запись и недоуменно смотреть чем это вы там занимаетесь
источник

E

Etki in pro.jvm
Не увижу, потому что их не будет. Запрещен параллельный апдейт уровнем изоляции. Роллбэк будет.
источник

ЕА

Евгений Афанасьев... in pro.jvm
Да, согласен. В результате решили отказаться от этой глупой идеи пихать акторы под одну транзакцию. Ни саги ни что-либо еще не является правильным решением в изначально иррациональной задаче.
источник

EA

Evil Arthas in pro.jvm
источник

EA

Evil Arthas in pro.jvm
Вот такое получилось
источник

EA

Evil Arthas in pro.jvm
бля, ток надо не логикал энд а логикал ор ебашит
источник

EA

Evil Arthas in pro.jvm
Теперь его еще залупить, как посоветовали здесь
Через фор норм будет сделать?
источник

EA

Evil Arthas in pro.jvm
и при успешном выполнении это:

em.persist(order);
transaction.commit();
источник

D𝔇

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

EA

Evil Arthas in pro.jvm
Теперь думаю сделать так, чтобы переданная в качестве аргумента сущность не изменялась, т.е. склонировать ее и менять копию
источник

E

Etki in pro.jvm
У меня слов просто нет. То что у него под капотом другой движок не означает что он пропускает феномен и rr для него имеет какие-то исключения по сравнению с субд у которой под капотом локи.
источник