[erlang-questions] Mnesia clustering script
Dmitry Kolesnikov
dmkolesnikov@REDACTED
Mon Oct 13 12:52:09 CEST 2014
Hello,
connect_node(OtherNode) stops mnesia application at last line.
Best Regards,
Dmitry
>-|-|-(*>
> On 13 Oct 2014, at 13:10, Erik Hoogeveen <erik.h.hoogeveen@REDACTED> wrote:
>
> I am trying to automate the procedure for a MongooseIM node to join another node. More precisely I’m trying to automate the procedure described here: https://github.com/esl/MongooseIM/wiki/Cluster-configuration-and-node-management#connecting-nodes
>
> I've made a small function that executes the logic to copy the tables and then stop the VM it looks like this:
>
> join_cluster_node([Node]) ->
> io:format("Node: ~p", [Node]),
> case net_adm:ping(list_to_atom(Node)) of
> pang ->
> io:format("Node: ~p is not reachable", [Node]);
> pong ->
> connect_node(list_to_atom(Node))
> end,
> init:stop().
>
> connect_node(OtherNode) ->
> mnesia:start(),
> {ok, [OtherNode]} = mnesia:change_config(extra_db_nodes, [OtherNode]),
> mnesia:change_table_copy_type(schema, node(), disc_copies),
> Result = [mnesia:add_table_copy(Tab, node(), ram_copies) ||
> Tab <- [
> acl,
> config,
> iq_response,
> local_config,
> node,
> route,
> s2s,
> session,
> sql_pool,
> component,
> offline_jingle,
> presence_subscription]],
> stopped = mnesia:stop().
>
>
> I invoke this bit of code like this:
>
> erts-6.1/bin/erlexec -boot releases/start_clean -mode embedded -config etc/app.config -args_file etc/vm.args -noshell -run admin join_cluster_node mongooseim@REDACTED — console_clean
>
> This is run before the node starts for the first time.
>
> When ran it works for the most part. Everything works fine except that the connecting node doesn’t write the Mnesia.mongooseim@REDACTED folder.
>
> So when the connecting node starts it still thinks it’s all alone in the universe. As shown by amnesia info:
> running db nodes = ['mongooseim@REDACTED']
> stopped db nodes = []
>
> The node that was being connected into did get the changes but it thinks the new node is still down:
> running db nodes = ['mongooseim@REDACTED']
> stopped db nodes = ['mongooseim@REDACTED']
>
> It seems to me that amnesia can’t write out it’s changes in time before the VM stops. But I’m completely at a loss as to why this happens. When I perform the whole operation manually from the shell it seems to work just fine. I’m kind of new at this does anybody have some suggestions that could be helpfull please?
>
> Thanks,
> Erik Hoogeveen
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list