Size: a a a

2019 December 19

AK

Andrey Konovalov in Modern::Perl
Коллеги, у меня есть Mojo-приложение, в котором хотелось, чтобы если в одном их воркеров гипножабы что-то (совершенно определённое на самом деле, там вариантов ошибок аж 2 штуки) случилось - этот воркер дох бы и гипножаба поднимала следующий.
Одна из ошибок легко детектится в startup'е, в Mojo::IOLoop->singleton->next_tick(sub { ... })
И если я её обнаруживаю, то сейчас делаю $logger->fatal('Message'); exit 1
Это правильный подход или прямо фуфу и что-то может пойти не так? :)
источник

AP

Anton Petrusevich in Modern::Perl
может на геарман тебе перейти?
источник

P

PsyDebug in Modern::Perl
хех. Лет ит краш в перле...)
источник

AK

Andrey Konovalov in Modern::Perl
PsyDebug
хех. Лет ит краш в перле...)
"Если хилый - сразу в гроб..." :)
источник

P

PsyDebug in Modern::Perl
Andrey Konovalov
Коллеги, у меня есть Mojo-приложение, в котором хотелось, чтобы если в одном их воркеров гипножабы что-то (совершенно определённое на самом деле, там вариантов ошибок аж 2 штуки) случилось - этот воркер дох бы и гипножаба поднимала следующий.
Одна из ошибок легко детектится в startup'е, в Mojo::IOLoop->singleton->next_tick(sub { ... })
И если я её обнаруживаю, то сейчас делаю $logger->fatal('Message'); exit 1
Это правильный подход или прямо фуфу и что-то может пойти не так? :)
А у гипножабы что с политиками рестартов воркеров? Когда ты так делаешь как он себя вообще ведет?
источник

P

PsyDebug in Modern::Perl
И как быстро эти воркеры оживают.(если оживают )
источник

P

PsyDebug in Modern::Perl
И почему ты не хочешь както более по человечески обработать эти исключения
источник

AK

Andrey Konovalov in Modern::Perl
PsyDebug
А у гипножабы что с политиками рестартов воркеров? Когда ты так делаешь как он себя вообще ведет?
У неё есть количество воркеров, есть "пинг-процедура" для выяснения того, кто помер, ну и соотв.: кто-то помер в смысле "не отвечает на мой ответ" - тут же поднимаем нового.
источник

AK

Andrey Konovalov in Modern::Perl
PsyDebug
И почему ты не хочешь както более по человечески обработать эти исключения
Для первого тика это как раз самый логичный вариант: запросов ещё не было, почему бы воркеру и не сложить ласты, если он к базе не приконнектился, например.
Вот во время работы это похуже конечно, но, ведь и клиенту не возбраняется делать повторную попытку.
Я помню код драйвера для чтения флоппи: он там раз 5 делал репопыптки, пока не исчерпывал счётчик либо не фейлился. Почему HTTP-клиенты так не делают - думаю, потому что кому-то лень описывать соотв. логику :)
источник

b

basiliscos in Modern::Perl
они так не делают, чтобы сервер не задосить
источник

b

basiliscos in Modern::Perl
если сервак лежит, или что-то там упало, если все вдруг переподключаются, то он скорей всего опять сложит ласты
источник

b

basiliscos in Modern::Perl
тут надо backoff
источник

AK

Andrey Konovalov in Modern::Perl
basiliscos
если сервак лежит, или что-то там упало, если все вдруг переподключаются, то он скорей всего опять сложит ласты
У меня была сегодня ситуация такая, что один-единственный воркер с какого-то перепуга не отрезолвил имя срвера БД (может, DNS упал, ХЗ). Если бы он просто сдох - ничего бы не было. А он не сдох - и когда рандомным образом на него опускался запрос - он  отвечал 500. Ну нафига мне такая радость?
источник

P

PsyDebug in Modern::Perl
Andrey Konovalov
У меня была сегодня ситуация такая, что один-единственный воркер с какого-то перепуга не отрезолвил имя срвера БД (может, DNS упал, ХЗ). Если бы он просто сдох - ничего бы не было. А он не сдох - и когда рандомным образом на него опускался запрос - он  отвечал 500. Ну нафига мне такая радость?
Он на каждый запрос чтоль у тебя новый коннект к базе делает?
источник

P

PsyDebug in Modern::Perl
Или при старте  не законнектился к базе, но при этом запустился?
источник

P

PsyDebug in Modern::Perl
Вобщем ответ в этих двух вопросах
источник

AK

Andrey Konovalov in Modern::Perl
PsyDebug
Или при старте  не законнектился к базе, но при этом запустился?
При старте не законнектился
источник

P

PsyDebug in Modern::Perl
Стандартная ситуация, обмажь коннект всякими карпами ор дай и т.д.
источник

P

PsyDebug in Modern::Perl
Пускай умрёт если не смог
источник

AK

Andrey Konovalov in Modern::Perl
С карпами в моджо беда: они то перехватываются, то не перехватываются, но почти всегда перехватываются. Логика не очевидная, не прозрачная, что плохо как по мне. Вот exit хрен перехватишь уже
источник