Me he encontrado con un problema donde no puedo detener a mnesia dentro de mi programa sin hacer que la aplicación se cuelgue.La detención de la aplicación Erlang se bloquea cuando mnesia se detuvo desde el programa
Actualmente estoy haciendo prototipos de mnesia dentro de mi aplicación Erlang.
En mi jaus_app.erl presentar el inicio() llama:
{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
Mi función stop() llama:
mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
Cuando comento hacia fuera estas líneas e iniciar y detener mnesia de la prompt de erlang, puedo detener mi aplicación limpiamente.
¿No debería utilizar estas funciones de prototipo dentro de una aplicación erlang completa?
Ken.
Esto ocurre porque la función 'stop' se llama desde el controlador de la aplicación, que es' gen_server', pero 'mnesia: stop' llama' aplicación: stop (mnesia) 'y espera una respuesta del controlador de la aplicación - y tienes un punto muerto Entonces, la respuesta simple es "no use' mnesia: stop' en esa función de devolución de llamada "; Aunque no tengo una sugerencia mucho mejor :) – legoscia