У меня возникла проблема, когда я не могу остановить mnesia внутри своей программы, не заставляя приложение зависать.Остановка приложения Erlang зависает, когда mnesia остановилась из программы
В настоящее время я делаю прототипирование mnesia в своем приложении erlang.
В моем jaus_app.erl подать начало() вызывает:
{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
Моя остановка() функция
называет:mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
Когда я закомментируйте эти строки и запускать и останавливать Mnesia от erlang prompt, я могу полностью прекратить мое приложение.
Должен ли я использовать эти прототипы в полноценном приложении erlang?
Ken.
Это происходит потому, что функция 'stop' вызывается из контроллера приложения, который является« gen_server », но« mnesia: stop »вызывает« приложение: stop (mnesia) »и ожидает ответа от контроллера приложения - и у вас есть тупик. Итак, простой ответ: «не используйте« mnesia: stop »в этой функции обратного вызова»; У меня нет лучшего предложения, хотя :) – legoscia