[erlang-questions] Shouldn't Mnesia be fully initialized after mnesia:start()?
Artur Matos
arturmatos78@REDACTED
Thu Jan 24 07:46:11 CET 2008
Hi to all,
I have started studying Mnesia recently, and as a test I've wrote the
following simple program:
-module(mnesiatest).
-compile([export_all]).
-include_lib("stdlib/include/qlc.hrl").
-record(registered_symbol, {symbol, date}).
test_no_wait() ->
mnesia:start(),
Fun = fun() ->
Q = qlc:q([E || E <- mnesia:table(registered_symbol)]),
qlc:e(Q)
end,
mnesia:transaction(Fun).
So test_no_wait() basically starts Mnesia and does a query of
all the records registered in the registered_symbol table. Now if I run this
program,
I get the following error (using Erlang R12B on Mac OS X 10.4, PPC):
10> mnesiatest:test_no_wait().
{aborted,{no_exists,registered_symbol}}
Although the record registered_symbol is defined in the source code. But if
I
change test_no_wait() to include a slight delay between mnesia:start() and
the
querying:
test_wait() ->
mnesia:start(),
%% Blocks for 10 seconds
receive
after 10000 ->
true
end,
Fun = fun() ->
Q = qlc:q([E || E <- mnesia:table(registered_symbol)]),
qlc:e(Q)
end,
mnesia:transaction(Fun).
and run this version:
11> mnesia:stop().
=INFO REPORT==== 20-Jan-2008::17:27:16 ===
application: mnesia
exited: stopped
type: temporary
stopped
12> mnesiatest:test_wait().
{atomic,[{registered_symbol,"IBM",{2008,1,20}}]}13>
then my query works, but I find this behavior a bit strange. It looks like
some Mnesia initialization is still going on after my call to
mnesia:start(), but shouldn't mnesia:start() block until Mnesia is fully
initialized? or shouldn't at least mnesia:transaction(Fun) do this? Or is
there any command that I should be calling that blocks until everything
is initialized?
In case it helps, this is the call I am using to define my database:
init() ->
mnesia:create_table(registered_symbol, [{disc_copies, [node()]},
{attributes, record_info(fields, registered_symbol)}]).
Thanks for the help,
Artur.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080124/ad3fb8ea/attachment.htm>
More information about the erlang-questions
mailing list