
Dmitry
03.11.2016
01:31:35
Баг просто не повторяемый
Иногда оно просто падает
И все
Звезды сходятся так что-либо

Google

Alexander
03.11.2016
01:32:26
может просто в воркере все обернуть и самого себя спасать?

Can
03.11.2016
01:33:02
Я не верю что люди не сталкивались с этим

Alexander
03.11.2016
01:33:06
просто если ты улетаешь в абнормал шутдаун, есессно апп старается сам не повиснуть и грейсфули уходит в мир иной

Dmitry
03.11.2016
01:33:50
Хз как сделать если убиваю killall командой легаси прогу, к которой подрубаюсь через порт
Фишка в том что все работает
Как Ванька встанька
Но иногда заметает хз почему
Заедает

Alexander
03.11.2016
01:36:32
проверяй что порт открыт, тогда делай дела, если нужно убить, убивай внешний процесс и опять проверяй, есть там что на порту

Dmitry
03.11.2016
01:36:47
Ну такое
Можно копать конечно
Можно вообще легаси переписать чтобы память не утекала

Google

Dmitry
03.11.2016
01:37:16
Но....

Alexander
03.11.2016
01:38:06
я в скрине запускал программку и просто через n времени убивал все скрины
т.к знал что она течет
просто в кроне был скрипт чтобы убить и поднять

Dmitry
03.11.2016
01:38:34
Ну я по сути ничего такого не делаю
Просто роняю генсервер и жду пока его заново поднимет
Просто иногда этого не происходит
И прям бесит

Alexander
03.11.2016
01:39:22
вообще костылей можно кучу нагородить, я вот уже 2 вижу. Так что пиши какой хочешь )

Dmitry
03.11.2016
01:39:33
Потому что не знаю почему

Alexander
03.11.2016
01:39:51
после секса с эликсиром я пришел к выводу что let it crash - это нежизнеспособно
пример: произошел нетсплит и дб не видна секунды 3. А в это время там сотни 2 запросов. Вместо того чтобы зарулить всех на сообщение, мол попробуйте позже, я получу полностью упавщий апп
заебись решение
так что никаких крешей, все должно быть отловлено

Can
03.11.2016
01:42:05
Все отловлено
Это джава

Alexander
03.11.2016
01:42:15
всем все ловится )

Can
03.11.2016
01:42:32
Ну я про стиль

Alexander
03.11.2016
01:42:35
в джаве логика на эксепшенах
а я про то чтобы у меня было все предсказуемо

Google

Alexander
03.11.2016
01:43:06
circuit breaker во все поля

Can
03.11.2016
01:47:20
Так а это
Старт перманент
Аппы
Последнее что осталось разобрать
Который в моем коде через микс_энв определяется
Он то что делает

Dmitry
03.11.2016
01:51:12
Если падает апп - падает нода
Теоретически можно через какой нибудь systemd перезапускать
Но я не умею)

Can
03.11.2016
01:51:47
Ну пиздец
Построим ещё один супервизор

Can
03.11.2016
01:52:16
Который будет над всеми охуенными супервизорами эрланга
Чтобы его рестартить

Dmitry
03.11.2016
01:52:35
Да, только уровня операционки))

Can
03.11.2016
01:52:45
Forever для ноды юзают
Ладно беру свои слова назад

Dmitry
03.11.2016
01:53:00
Вот реальная хуета получается

Can
03.11.2016
01:53:04
Тут Александр прав
Это ж самый распространённый юзкейс имхо

Google

Can
03.11.2016
01:53:42
Падение базы на минуту
И упавший апп

Dmitry
03.11.2016
01:54:18
Получается надо деплой жевать жопой чтобы все поднималось

Can
03.11.2016
01:54:18
Ну можно вкрутить дохуище рестартов в секунду
Но это выглядит ужасно

Dmitry
03.11.2016
01:54:42
Типа демонизировать бим

Can
03.11.2016
02:00:49
Кароч
Надо статью написать
Why famous erlang/elixir "let it crash" is broken

Admin
ERROR: S client not available

Can
03.11.2016
02:01:42
Она быстро расходится
У всех начинают гореть пердаки
Люди придумывают решение или объясняют автору где он не прав

Dmitry
03.11.2016
02:02:21
Осталось только понять, почему именно "why"... и я сразу напишу

Can
03.11.2016
02:02:34
Так вот идеальный пример
Why - отсутствие возможности рестарта аппы бесконечно, но с лимитом в единицу времени
Это бы все решило
Exponential backoff
Все дела
Просто оно рестартится 10 раз в 5 секунд, понимает что все плохо

Google

Can
03.11.2016
02:03:59
Дожидается пока пройдут 5 секунд
Рестартится снова
Никакой 100% загрузки cpu
Никаких костылей

Dmitry
03.11.2016
02:04:37
Можно самому переписать такое прямо в супервизоре

Can
03.11.2016
02:04:48
Аргументация с отвадившейся базой - идеальна
Абсолютно жива

Dmitry
03.11.2016
02:05:20
Короче работу сдам и начну строчить))

Can
03.11.2016
02:05:34
Плюс костыли нужны будут все равно

Dmitry
03.11.2016
02:06:00
Ну если пр в эликсир - есть шансы

Can
03.11.2016
02:06:09
Потому что даже если ты сам это напишешь то будет какой-нибудь внешний костыль
Потому что нету даже возможности просто по дефолту сделать так чтобы было бесконечно
Это на уровне языка надо сделать

Dmitry
03.11.2016
02:07:00
По дефолту же бесконечно
Просто ограничено временем

Can
03.11.2016
02:07:08
Так нет
Ну да

Dmitry
03.11.2016
02:07:27
Супервизор это генсервер стопудово

Can
03.11.2016
02:07:29
Тогда придётся сделать внешний типо 99999999 в сек

Dmitry
03.11.2016
02:07:52
Ему можно запихать в стейт экспоненциально увеличивающийся интервал времени

Can
03.11.2016
02:07:56
Просто нужен внешний неубиваемый воркер и проблема решится