Size: a a a

2021 June 25

ЕА

Евгений Афанасьев... in pro.jvm
😄👍
источник

E

Etki in pro.jvm
Это примерно как метод вернул какой-то компьютейшен, но мы теперь считаем этот компьютейшен некорректным потому что следующий за ним вызов выкинул эксепшн.
источник

DC

Denis Chikanov in pro.jvm
это очень странное сравнение
источник

DC

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

если у тебя есть цепочка A -> B -> C -> D <replies start here> -> C -> B -> A, то это вложенные вызовы
и вполне нормально, что у тебя вложенные вызовы наебнулись где-то, и ты это обрабатываешь
источник

E

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

E

Etki in pro.jvm
Loosely coupled, вот натягивает на себя рожу доцента
источник

E

Etki in pro.jvm
> я сделал, но были трудности

Извините, но вот это уже есть на уровне логики приложения, а не системы акторов. Он либо смог, либо крашнулся, другого не дано.
источник

DC

Denis Chikanov in pro.jvm
ну так логика приложения реализуется системой акторов
источник

E

Etki in pro.jvm
Ещё она реализуется с помощью машинного кода, но это не значит, что в ассембле у нас есть исключения в привычном для нас смысле, например
источник

DC

Denis Chikanov in pro.jvm
ну так и в цепочке мессаг акторов их нет, есть ответы на сообщения, сигнализирующие об исключительной ситуации
источник

DC

Denis Chikanov in pro.jvm
вообще есть другая проблема: акка пропагандирует location transparency, и потому вот так размазывать запись - не лучшая идея
источник

DC

Denis Chikanov in pro.jvm
то есть вообще говоря, вполне нормальной будет ситуация, где 4 актора находятся на 4 разных континентах, и их запись в реляционную базу не может быть частью одной транзакции просто принципиально
источник

AB

Andrey Belyaev in pro.jvm
Поэтому и открытый коннект передавать не надо. Замучаешься десериализовывать 😊 И там вообще может быть не база, а очередь какая-нибудь.

Я бы посылал какой-то идентификатор транзакции сквозной и, если что-то идет не так, актор бы рассылал сообщение об этом с номером транзакции, а уж каждый актор бы сам принимал решение, как это откатить. И вообще, надо ли.

@evg_af а у тебя как коммуникации отстроены? tell или ask используется?
источник

ЕА

Евгений Афанасьев... in pro.jvm
tell
источник

E

Etki in pro.jvm
Тогда роллбек должен быть отдельным функционалом в виде запросов "удали вот эту ранее сохраненную штуку"
источник

AB

Andrey Belyaev in pro.jvm
Тогда ой. Просто жди сообщений от кого-то, что в цепочке действий с номером 324876-12321 произошел сбой и принимай решение об откате. Ну, или переходи на ask и обвешивайся промисами. Если у тебя не 1000000 тпс, то должно прокатить
источник

E

Etki in pro.jvm
Впрочем, какая разница, не то чтобы какой-то очень принципиальный вопрос уровня 42
источник

ЕА

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

E

Etki in pro.jvm
А тебе точно надо их удалять?
источник

AB

Andrey Belyaev in pro.jvm
Ага, и если delete пошел не так, что делать, тоже подумай 😉
источник