
Евгений
26.09.2017
12:22:00
И писать им в личку, из-за кого же их забанили.

Nikita
26.09.2017
12:22:02
элита

Евгений
26.09.2017
12:22:14
Но не смогут, потому что будут забанены.

Nikita
26.09.2017
12:22:30
хочешь сделать популярным сделай дорогим

Google

Nikita
26.09.2017
12:22:36
(с) Стив Джобс
(нет)

Dmitry
26.09.2017
12:40:00
А мы понаблюдаем
))

Константин
26.09.2017
14:13:07
http://nuclearsecrecy.com/nukemap/
Эмулятор атомной бомбы
как накроет

Andrey
26.09.2017
14:16:14
полезная штука

Denis
26.09.2017
18:56:28
/start@BucklerBot
/stat@combot

Combot
26.09.2017
18:56:28
combot.org/chat/-1001061355522

Dmitry
26.09.2017
19:32:38
А можно ли супервизор сделать с глобальным именем, и если в соседней ноде запустить попытаться такой же - то он не запустится?

Google

Dmitry
26.09.2017
19:32:41
Как это сделатЬ?
Или даже лучше вопрос - что, если супервизоры на двух нодах попытаются запустить воркер с одним и те же глобальным именем?

Sergey
26.09.2017
19:37:45

Dmitry
26.09.2017
19:38:26
Честно, понятия не имею как в супервизор перед запуском добавлять логику

Sergey
26.09.2017
19:39:50
в init() что-то дописать, нет?

Dmitry
26.09.2017
19:40:12
В инит вроде как спеки добавляются
А тут вопрос, какой метод вызывать когда к примеру упал воркер

عاصم بن حارث
26.09.2017
19:40:54

Sergey
26.09.2017
19:41:07

عاصم بن حارث
26.09.2017
19:41:44
поясни
Все просто. Если инит проседает, то ты проваливаешь ВЕСЬ старт. (по времени)

Sergey
26.09.2017
19:41:44
в чём проблема сходить в ets, что-то проверить и, в случае, если проверка не удалась, вернуть {error, _}?
ну мне как бы и нужно в таком случае провалить старт =D

عاصم بن حارث
26.09.2017
19:43:20
етс создает и держит какй-то процесс (достук к ней и прочее зависит от парамов создания ЕТС), проще послать мессадж процессу о "состоянии ЕТС"
А так, получается, что перегружаем сущность. Пусть супервизор выполняет свои прямые обязанности, а не дудит, строгает, пилит и прочее ))) (имха, конечно)
Если не получается, то следует логику прилаги в целом пересматривать... что-то идет не так. (вновь, имха)

Sergey
26.09.2017
19:46:44
бесспорно, но в целом, как задизайнишь,

عاصم بن حارث
26.09.2017
19:47:07

Dmitry
26.09.2017
21:33:59
Я прост пытаюсь понять, как сделать чтобы мой бот запускался только на одной ноде в кластере
Если какой то красаучег решит одно и то же приложение запустить на кластере
А если нода, на которой бот, упадёт - то соответственно запустить на следующей живой

Google

Dmitry
26.09.2017
21:39:33
@Virviil А задача решение сделать самому или взять библиотеку тоже рассматривается? ( К примеру: bitwalker/swarm ). Достаточно просто можно, но и больше кода, используя wooga/locker сделать.

Dmitry
26.09.2017
21:40:04
У меня задача, чтобы моё решение никто не мог в конфигах поломать
Т.е. например, не бвло конфликтов к примеру в Registry или syn
Или чтобы кто-то случайно не залупил такую же ets
Как у меня есть
Я просто боюсь что если возьму одну либу, ктото возьмёт другую - и в проете будет пиздзец

Alexey
26.09.2017
21:41:28
так соединяй все узлы в кластер. а gproc умеет в кластере работать

Dmitry
26.09.2017
21:41:39
Я gproc не хочу
В принципе меня и global устраивает

Alexey
26.09.2017
21:42:21
есть стандартный механизм резервирования запуска приложения в кластере. когда одна нода с приложением падает - оно запускается на другой ноде

Dmitry
26.09.2017
21:42:42
Вот вопрос - как вырубить один из моих supervision tree если после коннекта в кластер станосится понятно, что запущено две приложеньки
К примеру

Alexey
26.09.2017
21:43:06
я ж говорю. там штатный механизм ОТПшный есть
когда приложение работает в кластере

Dmitry
26.09.2017
21:44:04
Да, но получается что приложение не работает

Dmitry
26.09.2017
21:44:15
Сделать этот supervision tree динамическим, динамически стартовать и динамически удалять, когда не нужен

Dmitry
26.09.2017
21:44:21
А если амбрелла к примеру
И все приложения кроме одного могут работать параллельно в кластере
К примеру феникс и бот
Феникс можно на двух нодах параллельно запустить

Google

Dmitry
26.09.2017
21:45:20
Поэтому резервирование не канает
вроде как...

Dmitry
26.09.2017
21:48:14
У супервизора есть stop_child. Можно сделать так, на каждой ноуде будет один главный супервизор, который стартуется на каждом ноуде и по одному процессу, которые в конечном итоге например обмениваются данными и решают, на каком ноуде запустить бота. Тогда через start_child/stop_child у главного супервизора можно будет динамически стартовать и динамически останавливать supervision tree отвечающий за бота.
Как вариант, если не использовать готовое решение.

Dmitry
26.09.2017
21:48:54
А вот такой вопрос - если у меня супервизор с глобальным именем
И я сперва собираю кластер
А потом на каждом запускаю приложение
То супервизор запустится только на одном?
Или в глобальном регистре будут пиды всех процессов
Или последнего?

Dmitry
26.09.2017
21:49:58
С global-ом запустится только первый.
На одном

Dmitry
26.09.2017
21:50:32
Хм... А что другие? Будут спамить ошибки в трейс?
Или уронят приложение?

Dmitry
26.09.2017
21:50:48
Уронят приложение.
Потому что не смогут запуститься

Dmitry
26.09.2017
21:50:58
Вот суки
Ладно.
ЩА мы их...
Можно в старт_линке суперизора проверить, что такого пока нету

Google

Dmitry
26.09.2017
21:52:10
И если есть - то закрыться через normal
наверное
Осталось только придумать как заколлбэчить при падении одной из нод его запуск

Dmitry
26.09.2017
21:59:33
{:shutdown, {:failed_to_start_child, Module, {:already_started, #PID<13609.203.0>}}} - с такой ошибкой вылетит из старта приложения, если попытаться стартовать global, когда он запущен на другой ноуде.

Dmitry
26.09.2017
22:00:17
Походу придётся нафаршматчить хитрожопый Supervisor
Который ничего не стартует
Только спеки там задать
Ну и крутиться как хз как

Dmitry
26.09.2017
22:03:08
Я бы сделал так, главный supervisor и у него worker, который отвечает за то, чтобы понять когда стартовать основного рабочего супервизора и он же может мониторить за ноудами и следить, когда ноуд упадёт.
Одна проблема, network split