Ho incontrato un problema in cui non riesco a fermare mnesia all'interno del mio programma senza causare l'interruzione dell'app.L'arresto di app Erlang si blocca quando mnesia si fermò all'interno del programma
Attualmente sto facendo la prototipazione di mnesia nella mia app di erlang.
Nel mio jaus_app.erl depositare l'inizio() chiama:
{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
funzione
mio arresto() chiama:
mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
Quando io commento queste righe avviare e arrestare mnesia dalla prompt di erlang, sono in grado di interrompere la mia domanda in modo pulito.
Non dovrei utilizzare queste funzioni di prototipo all'interno di un'app di erlang completa?
Ken.
Ciò accade perché la funzione 'stop' viene chiamata dal controller dell'applicazione, che è un' gen_server', ma 'mnesia: stop' chiama' application: stop (mnesia) 'e attende una risposta dal controller dell'applicazione - e tu hai una situazione di stallo. Quindi, la semplice risposta è "non usare' mnesia: stop' in quella funzione di callback "; Non ho un suggerimento molto migliore, però :) – legoscia