带有 Elixir 的 ejabberd 16.03,当第一个节点关闭时节点卡住

ejabberd 16.03 with Elixir, node gets stuck when first node is down

我已经更新到 ejabberd 16.03 并将其设置为 Elixir 项目依赖项(如:https://blog.process-one.net/how-to-use-ejabberd-as-an-elixir-application-dependency/)。 然后,我设置了一个由三个节点(node1、node2、node3)组成的集群,其中节点 2 和 3 运行: ejabberd_cluster.join "node1".

问题是,当我放下节点 1 和 3,然后我放下节点 2 并再次尝试 运行 节点 2,它不起作用。

我读过:,但是使用 Ejabberd 14 和 Erlang,问题没有发生。

我知道 Mnesia 是这样的,但是为什么它在升级前就可以工作了?

确实,正如您指出的那样,Mnesia 的预期和预期行为是您必须以相反的顺序启动节点或强制执行主节点。

自从 10 多年前首次发布带有集群的 ejabberd 以来,Mnesia 一直以这种方式工作并且行为没有改变。

您的情况不正确的是您最后停止了 node2 并首先启动了 node 2。它没有理由卡住,所以你要么有另一个问题,要么当你停止节点 2 时你以前的集群节点没有正确关闭。