2014-05-24 83 views
1

我有一个与Rebar一起打包的Erlang应用程序,该应用程序旨在作为服务运行。它与其他自身的实例集群。应用程序停止运行时退出虚拟机

我注意到的一件事是,如果应用程序在一个节点上崩溃,即使应用程序达到其管理员的重新启动限制并永远消失,Erlang VM仍会保持运行状态。结果是群集中的其他节点在尝试与应用程序交谈之前不会注意到任何事情。

是否有一种简单的方法将虚拟机链接到根超级用户,以便应用程序在整个虚拟机死亡时取下整个虚拟机?

回答

3

当使用application:start()启动应用程序时,可以将可选的Type参数添加为原子permanent,transienttemporary之一。我想你正在寻找permanent

application:start/2提到:

  • 如果永久应用程序终止,所有其他应用程序和整个的Erlang节点也终止。
  • 如果临时应用程序以Reason == normal结束,则会报告此事件,但不会终止其他应用程序。如果临时应用程序异常终止,则所有其他应用程序和整个Erlang节点也会终止。
  • 如果临时应用程序终止,则会报告此消息,但不会终止其他应用程序。
相关问题