
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

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

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

Alexander
27.12.2017
08:52:51
когда нельзя клиента держать в ожидании 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
в итоге если у тебя на трубе клиенты, они все повисли

Alex
27.12.2017
08:54:50

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

Google

Evgeny
27.12.2017
08:54:59

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

Alex
27.12.2017
08:55:44

Alex
27.12.2017
08:55:55

Vladimir
27.12.2017
08:56:00

Alexander
27.12.2017
08:56:14
отдал ему ключ с которым он придет позже за результатом

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

Vladimir
27.12.2017
08:56:44

Alex
27.12.2017
08:57:16

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

Alex
27.12.2017
09:03:34

Alexander
27.12.2017
09:03:49

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

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
подай тому же гитхабу на апи хоть полено

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

Evgeny
27.12.2017
09:06:45

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
которой можно подтерется, если хочется.

Vladimir
27.12.2017
09:09:34

Alexander
27.12.2017
09:10:17

Admin
ERROR: S client not available

Alex
27.12.2017
09:10:25

Alex
27.12.2017
09:10:47

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

Alex
27.12.2017
09:11:39

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

Google

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

Alexander
27.12.2017
09:12:12

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
все свалится на эндпоинте и плаге

Alex
27.12.2017
09:14:26

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 именно так и понял "упало, ну и пусть, забей болт"

Vladimir
27.12.2017
09:16:33

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

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

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