What is the best way to detect the conflict of mnesia schemas?

Sergey Samokhin <>
Wed Jun 10 00:18:32 CEST 2009


Hi.

I should have made sure that mnesia:change_config(extra_db_nodes,
[Node]) doesn't return error tuple before sending that message.
Actually it does return {error, {merge_schema_failed,
DetailedDescription}} tuple, which can be used to detect this kind of
schema-conflict.

So there are only two questions I'm trying to find answers to:

1) Is it right, that I should not use set_env() to change the value of
dist_auto_connect on the fly?

2) Is it right that there is no way in general to figure out that
mnesia:start() failed because nodes the schema-on-disk knows about are
no longer belongs to the same mnesia-cluster. Currently I start mnesia
by the following function:

start_mnesia() ->
    case mnesia:start() of
        {error, {shutdown, {mnesia_sup,start, [normal, []]}}} ->
            % write to log
	    exit("Schema seems to be ambiguous");
        ok ->
	    ok
    end.

Is there a better way to catch this error?

-- 
Sergey Samokhin


More information about the erlang-questions mailing list