[erlang-questions] Question about distributed mnesia behavior

Ulf Wiger <>
Sat Apr 28 14:13:22 CEST 2012


When test1 comes up, and detects that test2 is down, it also notes that it has no log entry of test2 dying. Therefore it assumes that test2 has a newer copy and decides to wait for it.

Remember that mnesia has no built-in heuristics for conflict resolution. It does provide a function to 'force_load' a table, if your application (or operator) can determine that it's the right thing to do.

Fair warning, though, make sure that test2 doesn't start loading in the middle of this. All bets are off then.

BR,
Ulf W

Ulf Wiger, Feuerlabs, Inc.
http://www.feuerlabs.com

28 apr 2012 kl. 10:25 skrev "cao.xu" <>:

> Hi,
> 
>    I am using mnesia recently under OTP R15B, and feel confused about some behavior of distributed mnesia.
> 
>    I ran two nodes with sname 'test1' and 'test2', and then executed the following command "mnesia:create_schema(['test1', 'test2']), mnesia:create_table(test, [{disc_copies,['test1', 'test2']}]" on 'test1'. After that, I was able to use table 'test' on both nodes, everything seemed fine.
> 
>     Then I shutdown these two nodes and restarted 'test2', the table 'test' was still accessible and I could read and write on it.  But when I shutdown 'test2' and restarted 'test1', the table 'test' was unaccessible. The function wait_for_table would timeout and operations on table 'test' would fail. Only if 'test2' is running, the table becomes accessible again on 'test1'.
> 
>    I was wondering if this is an expected behavior, or the table should work properly on both nodes when run alone.
> 
> BR
> 
> Xu Cao



More information about the erlang-questions mailing list