Size: a a a

2019 March 07

МБ

Максим Барулин in pro.elixir
два дня гуглил это параметр, блин
источник

МБ

Максим Барулин in pro.elixir
источник

YZ

Yaroslav Zemlyanuhin in pro.elixir
Максим Барулин
нагуглил backoff_type: :stop в настройках репо, в итоге все не будет падать, будет только в лог писать
насколько понимаю, этот парам прекращает попытки реконнекта и делегирует обработку ошибок на разработчика,
а при значении по-умолчанию происходит сколько-то заданных в супервизоре попыток подключения, а потом коллапс
источник

МБ

Максим Барулин in pro.elixir
можно увеличить количество до max_restarts  и использовать нужную стратегию через backoff_type
источник

ML

Maksim Lapshin in pro.elixir
Максим Барулин
можно увеличить количество до max_restarts  и использовать нужную стратегию через backoff_type
Это не то.

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

Если проблема снаружи, то надо сдохнуть и позвать старшего дежурного администратора
источник

ML

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

ML

Maksim Lapshin in pro.elixir
Считай что супервизор - это швабра, которой надо бить по телевизору что бы он перестал шипеть и начал показывать что-то. Если стучать надо не чаще 3 раз в минуту, то ок. Если ударил 10 раз подряд, а он все шипит - выключай и включай.

Если 7 раз выключил - выдерни из розетки и зови человека
источник

AB

Alexander Bogosyan in pro.elixir
А как разрулить проблему с тем что рестарт неатомарный? ну то есть если кто-то рестартует то остальные должны предполагать это при каждом call, ловить noproc например
источник

ML

Maksim Lapshin in pro.elixir
Alexander Bogosyan
А как разрулить проблему с тем что рестарт неатомарный? ну то есть если кто-то рестартует то остальные должны предполагать это при каждом call, ловить noproc например
Норма - свалиться. Если кто-то делает call к процессу, который рестартится, значит от этого процесса ответ будет недостоверный. Лучше упасть всем по цепочке и запросить заново
источник

AB

Alexander Bogosyan in pro.elixir
а если этот call предполагает {ok, Result} | {error, Reason}, почему не вернуть {error, noproc} и ответить 503 клиенту например?
источник

AB

Alexander Bogosyan in pro.elixir
или сделать ретрай
источник

МБ

Максим Барулин in pro.elixir
Maksim Lapshin
Это не то.

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

Если проблема снаружи, то надо сдохнуть и позвать старшего дежурного администратора
Не спорю, но у меня проще ситуация, есть бот, у него 5 баз, если, вдруг, одна упала, он должен продолжить работать с остальными и подождать пятую, а не рухнуть цедиком
источник

МБ

Максим Барулин in pro.elixir
Как правило даун продолжается несколько секунд, но за это время все валится, что недопустимо
источник

A

A1exey Lopatin in pro.elixir
Подскажите, туплю, почему ошибка компиляции и
list_count.ex:8: undefined function work/2, она же в модуле лежит под носом.

https://gist.github.com/lyo5ha/909f1389e1c2622b2d08386650f1da0c
источник

IS

Ilya Shuma in pro.elixir
В модуле указана work/1
источник

IS

Ilya Shuma in pro.elixir
А вызывается work/2
источник

A

A1exey Lopatin in pro.elixir
Блин, гениально. Вот это я затупил.  спс.
источник

IS

Ilya Shuma in pro.elixir
Там, очевидно, имелось ввиду просто ... |> work()
источник

A

A1exey Lopatin in pro.elixir
Не прпробовал, все равно
list_count.ex:7: undefined function work/1
источник

ML

Maksim Lapshin in pro.elixir
Максим Барулин
Не спорю, но у меня проще ситуация, есть бот, у него 5 баз, если, вдруг, одна упала, он должен продолжить работать с остальными и подождать пятую, а не рухнуть цедиком
Тогда это задача бота понять, что с той стороны дохлый сервер, завернуть работу с ним в try/catch
источник