Size: a a a

2018 November 08

AG

Alex Golubov in pro.elixir
о! это правильный подход
источник

AG

Alex Golubov in pro.elixir
чинить баг из-за которого он валится и дальше... в путь
источник

Е

Евгений in pro.elixir
кстати у меня генсервер не валится, он вполне себе корректно завершается, но вот оповестить другие процессы вовремя не получается.
источник

Е

Евгений in pro.elixir
У меня некий кеш процессов с жирными стейтами. Если к процессу долго никто не обращается он благородно делает сепукку. А в случае необходимости процесс-менеджер кеша создает новый процесс.
источник

AG

Alex Golubov in pro.elixir
ну ты сам придумал такую систему
источник

Е

Евгений in pro.elixir
Круто так, на любой вопрос отвечать: это не нужно, ты что-то делаешь не так :)
источник

DR

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

DR

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

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Если это 2 взаимосвязанных GenServer-а бывают случаи, что полезно чтобы упали (обычно я на уровне supervisor стратегии это указываю - например rest_for_one).
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
А бывают случаи, когда другим процессам нет смысла падать - иначе это бесмысленный cascading failure и не нужный в том контексте.
источник

AG

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

Е

Евгений in pro.elixir
уже писалось неоднократно, что "let it crash" годится не всегда
источник

Е

Евгений in pro.elixir
зачастую процесс так просто не перезапустишь с нуля.
источник

DR

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

AG

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

DR

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

AG

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

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Там где процессы могут друг без друга жить - должны жить друг без друга.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Alex Golubov
почему же бездумно, как видим, пока что это не получается и приходится ходить огородам
Это не огород, а проблема в дизайне GenServer-а.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Когда один процесс может жить без другого - падать на его отсутствие из-за GenServer.call - вот проблема в дизайне, и try catch - тут не огород.
источник