сущностью?
уже даже в рассматриваемом случае нельзя транзакцию, потому что do_something содержит внутри http-запрос. и в данном примере в запрос входит именно seq+1, и закоммитить его нужно именно после запроса, потому что дальше по нему проверяется коллбэк. и это один из очень часто встречающихся в нашем коде паттернов.
так, а что будет если персист выдаст ошибку
тут есть варианты. либо увидим её сразу в мониторинге и что-нибудь там починим, либо весь этот кусок уйдет на ретрай и отработает идемпотентность(seq+1 входит и в ключ идемпотентности) на другой стороне, либо на этой стороне напишем код, который видя, что entity.seq < callback.seq при прочих равных считает коллбэк заслуживающим доверия. но в первую очередь ошибка при персисте нужна, чтобы тесты взрывались на нарушении посткондишена, в проде ее по возможности быть не должно
Обсуждают сегодня