Остановка приложения Erlang зависает при остановке mnesia изнутри программы - PullRequest
5 голосов
/ 13 августа 2010

Я столкнулся с проблемой, когда не могу остановить mnesia в моей программе, не вызывая зависание приложения.

В настоящее время я делаю прототип mnesia в своем приложении erlang.

В моем файле 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(),

Когда я закомментирую эти строки и начну и остановлю mnesia изerlang, я могу аккуратно остановить свое приложение.

Разве я не должен использовать эти функции-прототипы в полноценном приложении erlang?

Кен.

Ответы [ 2 ]

2 голосов
/ 19 августа 2010

Используя systools для создания загрузочного файла, mnesia запускается перед моим приложением и останавливается после завершения работы моего приложения.Это устраняет проблему с зависанием, на которую ссылается legoscia выше.Идея загрузочного файла была предложена Мазеном из Erlang Consulting.Большое ему спасибо за это предложение.

1 голос
/ 13 августа 2010

Из документов erlang:

dump_to_textfile (Filename): Сбрасывает все локальные таблицы системы mnesia в текстовый файл, который затем можно редактировать (с помощью обычного текстового редактора), а затемпозже перезагрузите с помощью mnesia: load_textfile / 1. Используйте эту функцию только в образовательных целях .Используйте другие функции для работы с реальными резервными копиями.

...