вы мне поможете)
У меня есть пул GenServer под управлением пуллбоя. Я хочу сделать graceful shutdown по sigterm. Проблема вот в чём - если на момент вызова terminate в инбоксе процесса есть какие-то сообщения - то они теряются. Есть ли какой-то способ в этот момент достать все сообщения, обработать, а потом уже выйти?
Или как вообще принято делать? Ничего внятного нагуглить не смог
привет. как то можно было. я делал отлов события о завершении по сигналу с ОС.
в trrminate колбэке вызвать рекурсивный receive do m -> process(m) after 0 -> : ok end
Навскидку погуглил: https://github.com/botsquad/graceful_stop
Что-то я плох в гуглении >_<
да это хреновый подход так-то) не должны сообщения в инбоксе копиться в идеале
Я даже боюсь представить что будет, если случайно внутри этого process посылаются сообщения на еще один подобный генсервер, который тоже заблочился в terminate
можно запустить другой процесс, который по истечении таймаута, сделает hard kill
я не знал что это возможно)
Обсуждают сегодня