]> granicus.if.org Git - ejabberd/commitdiff
Check for Mnesia node name mismatches
authorHolger Weiss <holger@zedat.fu-berlin.de>
Thu, 12 Jun 2014 09:00:22 +0000 (11:00 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Thu, 12 Jun 2014 09:00:22 +0000 (11:00 +0200)
Log a proper error message if the node running ejabberd doesn't own the
Mnesia database.

src/ejabberd_app.erl

index 8106b7b0d135aac70cf0375911529631c6d8fe9c..6b0a85be893afec46c088494b2be71f3cead1aa3 100644 (file)
@@ -107,6 +107,18 @@ loop() ->
     end.
 
 db_init() ->
+    MyNode = node(),
+    DbNodes = mnesia:system_info(db_nodes),
+    case lists:member(MyNode, DbNodes) of
+       true ->
+           ok;
+       false ->
+           ?CRITICAL_MSG("Node name mismatch: I'm [~s], "
+                         "the database is owned by ~p", [MyNode, DbNodes]),
+           ?CRITICAL_MSG("Either set ERLANG_NODE in ejabberdctl.cfg "
+                         "or change node name in Mnesia", []),
+           erlang:error(node_name_mismatch)
+    end,
     case mnesia:system_info(extra_db_nodes) of
        [] ->
            mnesia:create_schema([node()]);