
Alexander
08.05.2017
01:16:43
мы заработали первые ~$1400 на эликсире
из плюсов - это постоянный доход и следующий счет уже на 7к лежит, но пока клиент сам не в продакшне, то им мы не торопим с оплатой
интересно, что в среднем все разработчики эликсира пишут почти одинаковый код, до такой степени, что грабли по которым все ходим уже стерлись
пример - коллега написал проверку токенов в хедере, и гвоздями прибил матчинг что пейлоад должен быть json. Клиент сделал опечатку и прислал нам почти 2кк запросов с хедером josn. Эликсир засрал наш трекер ошибок, упал несколько тысяч раз. Супервайзер tree схлопнулся почти тысячу раз.

Google

Alexander
08.05.2017
01:22:20
супер вообщем, лет ит мать его креш
на elixir кэмпе ребята чат написали с api на elixir - wrk с неверным хедером и у них все упало. )
но проект с аптеками закрылся вместе с продажей аптечной сети )
я прочел кучу статей по планированию и реализации API. Сходил на пару семинаров по этой тематике. Даже послушал гитхабовских спикеров на митапе, насчет апи. И нифига
все равно все плохо
постоянно что-то новое узнаешь, но не в книгах и от людей, а в проде и с кровавыми подробностями

abc
08.05.2017
07:33:34
А почему просто не описать ситуацию когда прилетает запрос с неверным хедером?

Alexey
08.05.2017
07:34:38
Блин и правда! Неужели так тяжело писать сразу без ошибок?

Alexander
08.05.2017
07:47:27
на рубях есть проект https://github.com/cerebris/jsonapi-resources тысяча звезд, 1.5к коммитов, 140 контрибьюторов. Пошли им пейлоад без одной скобочки ;)

abc
08.05.2017
07:58:42
Но ведь часто хедеры ставятся автоматически... Так же при желании можно и кривой http запрос собрать вручную

Alexander
08.05.2017
08:09:51
дело в том, чтобы апи было живучим

Google

Alexander
08.05.2017
08:10:36
если апи гитхаба можно завалить просто левой скобкой, девелоперами нужно камин топить.

Александр
08.05.2017
08:12:50
ну что значит "завалить", там всё встанет и не будет работать?
нет вернёт 500 в худшем случае, я думаю (не работал с этим гемом)

Can
08.05.2017
08:58:35
Александр у тебя супервизор тоже упал?
Опять возвращаемся к проблеме небесконечного рестарта?
Так то ну упали процессы неск тысяч раз
И фиг бы с ним
Главное чтобы аппа не падала

Alexander
08.05.2017
09:26:07

abc
08.05.2017
09:27:27
Как так? Я только из-за этого на нем :)

Alexander
08.05.2017
09:27:33
:)
ну значит ты неверные приоритеты в эликсире нашел

Dmitry
08.05.2017
09:28:25
Я всетки не понимаю почему надо убивать это дерево. У меня супервизор рестартит процесс по надобности, так чтобы упал сам супервизор - пару раз было на памяти

Alexander
08.05.2017
09:28:39
язык прекрасен для хайлоада при скромных ресурсах + адская консистенция без существенных отказов

Dmitry
08.05.2017
09:29:15
Просто тебе надо другой супервизор взять было
Ребята из кролика все уже давно решили

Alexander
08.05.2017
09:31:27
да там можно стратегиями поиграть, но бабблинг убивает все промежуточные супервайзеры
т.е решение принимает верхний

Google

Dmitry
08.05.2017
09:31:49
Так может у тебя архитектура плохая?

Alexander
08.05.2017
09:32:03
а вот где почитать о хороших? )

Dmitry
08.05.2017
09:32:10
Если ты убиваешь супервизор когда падает воркер - нечего удивляться
У меня один из первых проектов был заточен на летиткреш

Dmitry
08.05.2017
09:32:39
Вы какую-то дичь тут говорите. В эрланге обработку исключений как раз используют при обработке данных, полученных из внешних источников, чтобы разделить fault free код внутри и говнокод снаружи. И let it crash обычно не относится к таким ситуация, ибо проблема не внутри приложения.

Dmitry
08.05.2017
09:33:38
Я подключал через порт клиент телеграмма, который течёт по памяти, и я его просто убивал баш скриптом раз в минуту.

Alexander
08.05.2017
09:34:04
раз в минуту - не проблема, даже раз в секунду - вообще отлично

Dmitry
08.05.2017
09:34:11
Так вот воркер схлопывался из-за того что порт закрывался, и супервизор все это дело перезапускал

Alexander
08.05.2017
09:34:31
когда фейлится сотни раз в секунду - вот тут конец

Александр
08.05.2017
09:34:41
по умолчанию в фениксе, кстати, при ошибке в воркере перезапускается только воркер, там one_for_one
так что при ошибке в плаге, должен тупо умереть тот же самый процесс и перезапуститься

Can
08.05.2017
09:35:45
Да все понятно давно, должен быть супервизор который ни при каких условиях не падает

Dmitry
08.05.2017
09:35:47
Да была такая проблема, но я взял другой супервизор из rabbitmq, во первых, а во вторых часть ошибок пришлось обработать - ну вернее все кроме схлопывания порта.

Admin
ERROR: S client not available

Can
08.05.2017
09:35:51
Из кротка
Из кролика
Вот непонятно почему он не в языке ещё
@Virviil ты дотыкал его?

Dmitry
08.05.2017
09:36:39
Я просто подрубил и у меня работает

Alexander
08.05.2017
09:36:41

Google

Dmitry
08.05.2017
09:36:47
Может мне просто везёт

Can
08.05.2017
09:37:05
Ты вроде собирался

Dmitry
08.05.2017
09:37:26
Не помню нифига)
На самом деле летиткреш вообще не должен исключать обработку ошибок - всех известных ошибок

Can
08.05.2017
09:38:00
Просто его подрубил?

Dmitry
08.05.2017
09:38:01
Как по мне

Can
08.05.2017
09:38:10
Который второй

Dmitry
08.05.2017
09:38:37

Can
08.05.2017
09:38:49
Ну вот подскажи Александру
И все его проблемы решатся
Он уже 10 раз на одно и то же ругается
У меня кстати тоже была эта же проблема
На первом проекте

Dmitry
08.05.2017
09:39:29
Ему судя по всему не поможет

Can
08.05.2017
09:39:35
Я демон уведомлений делал при персистентном логе в базу
И все падало
Когда пачка приходила

Dmitry
08.05.2017
09:40:12
Потому что если воркер падает чаще чем супервизор может поднимать - засирается мэилбокс супервизора и он падает