Size: a a a

2021 February 04

DC

Denis Chikanov in pro.jvm
была возможность сразу её не делать, прочитав правила
источник

HH

Human Human in pro.jvm
Обрабатываете ли вы редкие ошибки из разряда состояний гонок?
Например:
1. Ошибка ограничения бд на уникальность, например username.
2. OptimisticLockException

И как обрабатываете?
источник

HH

Human Human in pro.jvm
Для OptimisticLockException - можно поставить какой-нить ретрай на 3 попытки.
А для какого-нить DataIntegrityViolationException - что делать? Очень общая ошибка и не всегда нужно ставить ретрай.
источник

V

Vlad in pro.jvm
Human Human
Для OptimisticLockException - можно поставить какой-нить ретрай на 3 попытки.
А для какого-нить DataIntegrityViolationException - что делать? Очень общая ошибка и не всегда нужно ставить ретрай.
Так по 1 ничего не сделаешь же, ошибка либо в данных, либо в коде. Если запрос с ui, можно валидировать в дто
источник

HH

Human Human in pro.jvm
Vlad
Так по 1 ничего не сделаешь же, ошибка либо в данных, либо в коде. Если запрос с ui, можно валидировать в дто
Ну вот я привел пример с нарушением констрейнта уникальности. Это не ошибка, это race condition
источник

HH

Human Human in pro.jvm
Два запроса от разных пользователей:
A: checkEmailUniqueness
B: checkEmailUniqueness
A: addNewUser
B: addNewUser -> DataIntegrityViolationException
источник

V

Vlad in pro.jvm
Human Human
Ну вот я привел пример с нарушением констрейнта уникальности. Это не ошибка, это race condition
Пока не понимаю, как может быть race condition в таком случае
источник

HH

Human Human in pro.jvm
Vlad
Пока не понимаю, как может быть race condition в таком случае
Вы когда добавляете пользователя с условием уникальности email или username - вы лочите всю таблицу?
источник

V

Vlad in pro.jvm
Human Human
Вы когда добавляете пользователя с условием уникальности email или username - вы лочите всю таблицу?
Нет. В транзакции изменение
источник

HH

Human Human in pro.jvm
Vlad
Нет. В транзакции изменение
А какого уровня транзакцию юзаете - serializable? Раз таких ошибок у вас нет?
источник

V

Vlad in pro.jvm
Human Human
А какого уровня транзакцию юзаете - serializable? Раз таких ошибок у вас нет?
А какая ошибка, это же две разные строчки, никак не связанные между собой, откуда нарушение ограничения?
источник

HH

Human Human in pro.jvm
Vlad
А какая ошибка, это же две разные строчки, никак не связанные между собой, откуда нарушение ограничения?
Ну вот у нас констрейнт в бд на уникальность username. Первый пользователь добаляет constraint@mail.com и второй тоже добавляет constraint@mail.com. Бам DataIntegrityViolationException
источник

V

Vlad in pro.jvm
Human Human
Ну вот у нас констрейнт в бд на уникальность username. Первый пользователь добаляет constraint@mail.com и второй тоже добавляет constraint@mail.com. Бам DataIntegrityViolationException
Понял, ну в любом случае, ничего не сделать, данные же не поменяем самостоятельно, отдать ошибку на ui. Как при проблеме оптимистичной блокировки, извините, занято имя, не успели
источник

HH

Human Human in pro.jvm
Vlad
Понял, ну в любом случае, ничего не сделать, данные же не поменяем самостоятельно, отдать ошибку на ui. Как при проблеме оптимистичной блокировки, извините, занято имя, не успели
Да, но вот след. проблема это как понять, что именно DataIntegrityViolationException означает. Ибо это не всегда конфликт уникальности. Поэтому интересно как правильно обрабатывать DataIntegrityViolationException
источник

I

Igor in pro.jvm
в общем, это тема для @flood, а не для этого чата
источник

DC

Denis Chikanov in pro.jvm
@Arhadar зима и правда пройдёт, но не рассчитывай, что ты с нуля достигнешь уровня, который позволит тебе устроиться на работу, за зиму

с нуля рассчитывай минимум на год времени на обучение
источник

ЕМ

Евгений Михайлов... in pro.jvm
На litres почему бы и нет
источник

D

Dima in pro.jvm
Human Human
Для OptimisticLockException - можно поставить какой-нить ретрай на 3 попытки.
А для какого-нить DataIntegrityViolationException - что делать? Очень общая ошибка и не всегда нужно ставить ретрай.
вторая ошибка общая
источник

D

Dima in pro.jvm
то есть кажется ее обернуть в свое сообщение и кидать 500ку
источник

D

Dima in pro.jvm
потому что при нормальной работе ее быть не должно
источник