Size: a a a

2018 November 08

Е

Евгений in pro.elixir
вы что-то делаете не так (c)
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Евгений
вы что-то делаете не так (c)
Все мы делаем так... Не так - это позволять из-за дизайна ген сервера cascading failure.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Который приводит к большой нагрузке в системе.
источник

AG

Alex Golubov in pro.elixir
ну если я не ошибаюсь любой сервер в том числе и Gen падать должен редко, а желательно никогда, если сервер падает это косяк который надо фиксить. вы согласны? :)
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Опять же, если процессы связаны, то они будут  и на уровне супервизора связаны чаще всего. Ситуации разные бывают, но когда один процесс может жить без другого - он не должен падать из GenServer.call-а и никакие без основанные цитаты-клише, когда нет аргументов, типа ты "делаешь что-то не так" - не переубедят меня в этом.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Alex Golubov
ну если я не ошибаюсь любой сервер в том числе и Gen падать должен редко, а желательно никогда, если сервер падает это косяк который надо фиксить. вы согласны? :)
Да, кроме тех случаев - когда это Flow в дизайне библиотеки, который не просто пофиксить.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Опять в продакшене не все так однозначно, потому что авторы библиотек не идеальны - и со всем этим надо работать, если хочешь чтобы твоя система работала стабильно.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Alex Golubov
ну если я не ошибаюсь любой сервер в том числе и Gen падать должен редко, а желательно никогда, если сервер падает это косяк который надо фиксить. вы согласны? :)
А ещё, не повод на каждый косяк падать половине системы, и нет систем без багов, поэтому на каждое падение система должна адекватно реагировать... И повторюсь - если два процесса могут прожить один без другого - то при падении первого второму падать не нужно.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Фиксишь нужный ген сервер и радуешься, что у тебя пол системы не упало и не создало огромнейшей нагрузки из-за одного мелкого бага.
источник

AG

Alex Golubov in pro.elixir
не, я за то чтобы фиксить баги
источник

ŹR

Źmićer Rubinštejn in pro.elixir
GenServer пришёл без переделок из эрланга, а там никто не заморачивается из-за try catch
источник

ŹR

Źmićer Rubinštejn in pro.elixir
И если бы сделали специальный “call!”, внутри все равно был был exception
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я конечно понимаю, что психологически легче вызывать функции и не писать try блок, но под капотом одно и тоже
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Иначе нужно походу патчить beam, но я понятия не имею можно ли это в принципе сделать или нет, и на что это повлияет
источник

YZ

Yuri Zhloba in pro.elixir
Dmitry Russ (Aleksandrov)
    try do
     GenServer.call(...)
   catch
     :exit, {:timeout, {GenServer, ...}} ->
       {:error, ...}
   end
- подобный код у нас часто встречается.
Я никогда за всю свою практику такого не делал. Если ген сервер не успевает делать всю работу, которой его нагружают, то надо что-то менять в системе так, что бы успевал. Искать узкое место и устранять.
источник

YZ

Yuri Zhloba in pro.elixir
Źmićer Rubinštejn
И если бы сделали специальный “call!”, внутри все равно был был exception
Зачем нужен такой call, если уже есть cast?
источник

YZ

Yuri Zhloba in pro.elixir
Это, типа, ответь мне на такой-то запрос, но если не можешь ответить, то и фиг с ним. Мне ответ не очень-то и нужен.
источник

YZ

Yuri Zhloba in pro.elixir
Это довольно странное поведение :)
источник

YZ

Yuri Zhloba in pro.elixir
Какой бы мощной не была система, у нее все равно есть предел. Таймаут на ген-сервере, это один из типичных признаков того, что система достигла предела. И про этот факт очень хотелось бы вовремя узнать. А скрывать этот факт от самого себя - - плохая идея.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Yuri Zhloba
Какой бы мощной не была система, у нее все равно есть предел. Таймаут на ген-сервере, это один из типичных признаков того, что система достигла предела. И про этот факт очень хотелось бы вовремя узнать. А скрывать этот факт от самого себя - - плохая идея.
Чаще всего отлавливается то, что процесса уже нет. К примеру, у нас можно для каждого рабочего юнита - получить с него информацию, чем он занимается, но я хочу чтобы ответ был - юнит уже умер, вместо того, чтобы спрашивающий процесс крэшился.
источник