@proelixir

Страница 841 из 1045
Alexander
27.12.2017
08:49:27
Evgeny
27.12.2017
08:49:45
не проще ли ловить ошибки обработки сообщений и отвечать отправителям этих сообщений каким-нибудь {:error, :unknown_reason}, за одно записать в лог причину ошибки и отправить сообщение разрабу, чтобы позырил и устранил. А потом продолжать обрабатывать остальные сообщения.

Alex
27.12.2017
08:50:02
если стейт ценен - он должен сразу персиститься наружу в базу

Alex
27.12.2017
08:50:11
вот вот

Google
Alexander
27.12.2017
08:50:18
так, а альтернатива какова? Допустим стрим весьма ценнен и нельзя терять сокет, значит сокетом владеет один процесс, а принимает данные другой.
чанки просто принимать и обрабатывать потом. Фактически тут просто труба - влить данные с ответом 202 или 208 если такие уже поймал чанки. Обработать потом тихо в норке никого не тревожа

Vladimir
27.12.2017
08:50:44
так, а let it crash где мешает этому?

Alex
27.12.2017
08:50:51
а если чел хранит ценный стейт в сервисе а потом пытаестя всеми силами его спасти то тут что то не так

Alexander
27.12.2017
08:52:51
так, а let it crash где мешает этому?
я выше написал о костылях чтобы летиткреш цвел и пах

когда нельзя клиента держать в ожидании 200

Evgeny
27.12.2017
08:53:04
да ну нахер этот лет ит краш

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

Alexander
27.12.2017
08:53:52
просто у летиткреша есть обратная сторона - когда крешнулся не тред, а ВМ решила что все плохо и делает не рестарт, а релоад

Vladimir
27.12.2017
08:53:54
Ну так это не костыль, нужно правильно разбивать состояние на процессы, и каждый может независимо падать -- всё в русле let it crash

Evgeny
27.12.2017
08:54:06
а тут вся очередь сообщений херится - в жопу такой лет ит креш.

Alexander
27.12.2017
08:54:09
в итоге если у тебя на трубе клиенты, они все повисли

Alexander
27.12.2017
08:54:54
я не агитрую против, я за понимание что это не панацея

Google
Alexander
27.12.2017
08:55:27
wat
ага, я тоже так WAAAT когда первый раз процесс поднимался секунд 5

Alex
27.12.2017
08:55:44
когда нельзя клиента держать в ожидании 200
так ответь ему сразу ченить и путь он потом перезапросит

Alexander
27.12.2017
08:56:14
так ответь ему сразу ченить и путь он потом перезапросит
я так и сделал. Принял данные и сразу отпустил клиента с миром, мол принято

отдал ему ключ с которым он придет позже за результатом

Evgeny
27.12.2017
08:56:41
Если стейт в результате ошибки не портится накой подыхать-то нужно?

Vladimir
27.12.2017
08:56:44
просто у летиткреша есть обратная сторона - когда крешнулся не тред, а ВМ решила что все плохо и делает не рестарт, а релоад
Чёт я запутался совсем. Тред, имеется ввиду OS thread? ВМ делает рестарт/релоад -- в какой момент? Супервизор делает рестарт для отдельных процессов, да.

Vladimir
27.12.2017
08:57:42
Alex
27.12.2017
08:58:13
отдал ему ключ с которым он придет позже за результатом
а еще принял от него его ключ к этим же данным, чтобы клиент мог что-то узнать, если не получит ответа

Alexander
27.12.2017
08:59:03
Vladimir
27.12.2017
08:59:13
ага, т.е. процессы эрланга

Alexander
27.12.2017
08:59:58
но есть момент, когда например в тред подал кривой код или данные и код еще кривой. На примере загрузки изображений. Все наверное пытались пользоваться ark

в нем был интересный баг - таск мог ломаться так, что beam убивала весь процесс

Evgeny
27.12.2017
09:00:52
у меня вот некий сторонний сервис может тупо ответить кривым json или невалидным utf и что мне из-за этого валить половину системы?

Alexander
27.12.2017
09:01:11
при это происходит перегрузка приложения, что занимает несколько секунд если приложение небольшое.

Vladimir
27.12.2017
09:01:37
что-то вообще неправильно, зачем перегрузка?

Alexander
27.12.2017
09:01:45
Google
Alex
27.12.2017
09:02:20
в нем был интересный баг - таск мог ломаться так, что beam убивала весь процесс
в смысле, ошибка доходила до корневого супервизора приложения и оно отмирало целиком?

Alexander
27.12.2017
09:03:49
ну так обработай это. let it crash или нет - на свое усмотрение
тут есть одна интересная мелочь. Если клиент шустрый, то может сделать очень много запросов и тогда супервизор не поднимет процесс, т.к он считается плохим

Vladimir
27.12.2017
09:04:20
если ты получил кривой ответ, и он не матчится -- процесс падает, всё правильно. Если это суперважно, то супервизор пытается рестартануть его, и потом дохнет всё приложение. Если это не важно, то просто нужно добавить процесс как transient в supervision tree, и он молча сдохнет никому не помешав.

Alex
27.12.2017
09:04:29
так настройку супервизора можно поменять

Evgeny
27.12.2017
09:04:37
Короче, let it crash - не нужен. ?

Alexander
27.12.2017
09:04:38
что прям весь erlang процес валится?
нет, феникс просто засирает все в логах и выдаст 500, но клиент как бы хотел просто что неверный пейлоад

Evgeny
27.12.2017
09:04:52
что за пейлоад?

кривые данные в каком-нибудь POST-запросе?

Alexander
27.12.2017
09:05:29
так настройку супервизора можно поменять
я бы не стал, т.к это возможность уйти в бесконечный ретрай

Alex
27.12.2017
09:05:33
если клиент сам кривой то пусть на свою рожу пеняет

Alexander
27.12.2017
09:06:00
если клиент сам кривой то пусть на свою рожу пеняет
это не хороший вариант. Сервер железобетонно должен дать нормальный ответ а не 500

подай тому же гитхабу на апи хоть полено

Alex
27.12.2017
09:06:23
не надо делать работу клиента за него

Evgeny
27.12.2017
09:06:45
это не хороший вариант. Сервер железобетонно должен дать нормальный ответ а не 500
Абсолютно согласен. Все 500-ые ошибки должны планомерно искореняться

Alex
27.12.2017
09:06:56
я бы не стал, т.к это возможность уйти в бесконечный ретрай
так там временные настройки вроде есть

Alexander
27.12.2017
09:06:59
пятисотками святить не дело. Да и в моем случае мне клиент за 10 минут выжрал всю квоту в трекере ошибок

Vladimir
27.12.2017
09:07:00
какой-то странный диалог

Alex
27.12.2017
09:07:14
да)

Google
Alexander
27.12.2017
09:07:30
какой-то странный диалог
я запутался, кому ответил, кого пропустил

Evgeny
27.12.2017
09:07:42
тетралог?

или пенталог?

Alex
27.12.2017
09:07:57
какой-то странный диалог
оче сложно, еще и терминологию не все соблюдают

Alex
27.12.2017
09:08:48
короче ребята, все в ваших руках и если что-то не работает сами знаете кто виноват и что делать

Alexander
27.12.2017
09:08:57
короче: летиткреш - не панацея, beam может острелить весь процесс и переподнять его, что займет несколько секунд и ну никак не катит на летиткреш. святить 500 всем подряд - плохо, нужно все отлавливать и выдавать клиенту какой-то нормальный ответ или банить сразу

Evgeny
27.12.2017
09:09:01
На самом деле let it crash - это совсем не философия эрланга или эликсира как языков. Скорее это философия OTP

которой можно подтерется, если хочется.

Alexander
27.12.2017
09:10:17
На самом деле let it crash - это совсем не философия эрланга или эликсира как языков. Скорее это философия OTP
меня в эликсир купили летиткрешем, приятным синтаксисом(ПАЙПЫЫЫЫ!!), и шансом быть пионером, чтобы потом плевать с трона во вновь прибывших и брюзжать, как дед

Admin
ERROR: S client not available

Alex
27.12.2017
09:10:25
отстрелить процесс или приложение?
+1. это что за процесс такой должен быть, чтобы секунды подниматься

Vladimir
27.12.2017
09:11:09
короче: летиткрэш -- самая охуенная вещь для создания архитектуры что была придумана за последние 30 лет

Alex
27.12.2017
09:11:09
> шансом быть пионером, чтобы потом плевать с трона во вновь прибывших и брюзжать, как дед ты уже опоздал, нужно было на эрланге начинать

Alexander
27.12.2017
09:11:16
отстрелить процесс или приложение?
весь апп, т.к он пропадает из процессов и потом раскручивается вновь

Vladimir
27.12.2017
09:11:32
ок, теперь понятно. да, есть такое

Vladimir
27.12.2017
09:11:38
Мне такое чувство, что все кто хают let it crash в чяте тупо не дочитали доку про supervision trees и child specs

Evgeny
27.12.2017
09:11:42
если фениксу сунуть кривой HTTP-заголовок или просто мусора насыпать в сокет, он что тоже сделает let it crash, навалит кучу красного говна в логи и ответит 500-й ошибкой?

Google
Vladimir
27.12.2017
09:11:54
а то я уж было подумал, что что-то упустил в понимании того, как бим работает)

Vladimir
27.12.2017
09:12:33
то, что приложение может упасть - это нормально. и всегда это должно учитываться.

потому у OTP есть механизм failover-takeover. избыточный по сути, но есть.

Alex
27.12.2017
09:13:13
дело в том что брюзжать все равно придется и надо просто выбрать с чем )))

Evgeny
27.12.2017
09:13:22
ну в своих контроллерах я, допустим могу сам обрабатывать json-ы и ловить ошибки их парсинга, а что с тем, что обрабатывается в глубинах самого феникса?

Vladimir
27.12.2017
09:13:36
не используйте феникс)

Alex
27.12.2017
09:13:45
+1

Alex
27.12.2017
09:13:54
мы в нынешней итерации архитектуры вообще отказались от сколько-то долгоживущих процессов.

Alexander
27.12.2017
09:14:05
Evgeny
27.12.2017
09:14:24
то, что приложение может упасть - это нормально. и всегда это должно учитываться.
Ну одно дело удобные механизмы автоподнятия упавших процессов - это хорошо. Другое дело философия "упало, ну и хуй с ним, само поднимется"

Alexander
27.12.2017
09:14:24
все свалится на эндпоинте и плаге

Alexander
27.12.2017
09:14:53
из всего что есть, феникс ок

Evgeny
27.12.2017
09:14:55
А что использовать? голой ковбой? там есть шанс чего-то поймать?

Alex
27.12.2017
09:15:00
анонимные стейтлесс воркеры на очередях. даже beam как таковой не нужно

Vladimir
27.12.2017
09:15:32
Ну одно дело удобные механизмы автоподнятия упавших процессов - это хорошо. Другое дело философия "упало, ну и хуй с ним, само поднимется"
ессно, что ошибки надо минимизировать. но они всегда будут. тут скорее не "упало - само подымется", а "упало - подымется, по возможности - с непротиворечивым стейтом".

короче, это уже на совести того, кто архитектуру проектирует. за это деьги платят в конце концов)

Evgeny
27.12.2017
09:16:15
ну я let it crash именно так и понял "упало, ну и пусть, забей болт"

Evgeny
27.12.2017
09:17:01
бля, вы меня печалите с фениксом

Alexander
27.12.2017
09:17:17
из всех говн, феникс самое нормальное говно

Evgeny
27.12.2017
09:17:22
неконтролируемые 500-е ошибки меня бесят ужасающе

Страница 841 из 1045