How long does mnesia take to warm up?

Joe Armstrong (AL/EAB) <>
Thu Sep 8 16:06:40 CEST 2005


   When I evaluate mnesia:start() it seems to take a little time before mnesia is
ready to do what I tell it - is this a bug? - do I really have to busy-wait
before it is ready?

   I have made myself a little mnesia table called mom_types
 
   In this run I have to make 34 attempts to write the table, attempts 1 to 34 fail because there is no such table, but 35 succeeds because suddenly there *is* a table.

   Alternatively I can wait for half a second or so after starting mnesia
   
   I guess this is a synchronisation error in the start-up?

	/Joe



Eshell V5.3  (abort with ^G)
1> bug:start()
Oh dear N=0 {aborted,{no_exists,mom_types}}
Oh dear N=1 {aborted,{no_exists,mom_types}}
...
Oh dear N=33 {aborted,{no_exists,mom_types}}
Oh dear N=34 {aborted,{no_exists,mom_types}}
At last N=35 ok
true
 

-module(bug).

-export([start/0]).

start() ->
    mnesia:start(),
    do(0).

do(N) ->
    V = mnesia:transaction(fun() ->
				   mnesia:write({mom_types,a,b})
			   end),
    case V of
	{atomic, X} ->
	    io:format("At last N=~w ~p~n",[N, X]),
	    true;
	Other ->
	    io:format("Oh dear N=~w ~p~n",[N, Other]),
	    do(N+1)
    end. 



More information about the erlang-questions mailing list