Я пишу модуль ejabberd, и мне нужно выполнить различные действия по очистке при остановке в двух следующих случаях:
- Этот же модуль в данный момент работает на других узлах кластера.
- Это последний работающий экземпляр моего модуля.
Я рассматриваю следующее решение:
is_there_running_instances() ->
{Results, _} = rpc:multicall(nodes(), ?MODULE, ejabberd_loaded_modules, []),
lists:member(?MODULE, lists:append(Results)).
ejabberd_loaded_modules() -> ???.
Но не знаю, как получить список загруженных модулей. Как мне это сделать? Или моя проблема имеет лучшее решение?