当mnesia从程序中停止时,停止Erlang app会挂起

时间:2010-08-13 13:54:19

标签: erlang mnesia

我遇到了一个问题,我无法在程序中阻止mnesia而不会导致应用程序挂起。

我目前正在我的erlang应用程序中进行mnesia原型设计。

在我的jaus_app.erl文件中,start()调用:

{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")

我的stop()函数调用:

mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),

当我注释掉这些行并从erlang提示符开始和停止mnesia时,我能够干净地停止我的应用程序。

我是否应该在完全成熟的erlang应用程序中使用这些原型函数?

2 个答案:

答案 0 :(得分:2)

通过使用systools创建启动文件,mnesia在我的应用程序之前启动,并在我的应用程序关闭后停止。这解决了上面legoscia提到的悬挂问题。引导文件的想法是由来自erlang咨询公司的Mazen提出的。非常感谢他的建议。

答案 1 :(得分:1)

来自erlang docs:

  

dump_to_textfile(文件名):   转储mnesia的所有本地表   系统成一个文本文件,然后可以   编辑(通过普通文本   编辑)然后再重新加载   使用mnesia:load_textfile / 1。 仅使用   这个功能用于教育   目的即可。使用其他功能来处理   真正的备份。