@@ -178,9 +178,15 @@ can_join_cluster(DiscoveryNode) ->
178178 rabbit_log :info (" Asked to join a cluster but already a member of it: ~tp " , [ClusterNodes ]),
179179 {ok , already_member };
180180 false ->
181- Msg = format_inconsistent_cluster_message (DiscoveryNode , node ()),
182- rabbit_log :error (Msg ),
183- {error , {inconsistent_cluster , Msg }}
181+ % % Leave cluster and try again. Limit the number of times?
182+ % % Also this is perhaps a weird place to do this, better to do
183+ % % something similar in rabbit_db_cluster:join/2?
184+ rabbit_log :info (" Mnesia: node ~tp thinks it's clustered "
185+ " with node ~tp , but ~tp disagrees. ~tp will ask "
186+ " to leave the cluster and try again." ,
187+ [DiscoveryNode , node (), node (), node ()]),
188+ leave_cluster (rabbit_nodes :nodes_excl_me (ClusterNodes )),
189+ can_join_cluster (DiscoveryNode )
184190 end
185191 end .
186192
@@ -924,14 +930,14 @@ remove_node_if_mnesia_running(Node) ->
924930 end .
925931
926932leave_cluster () ->
927- case rabbit_nodes :nodes_excl_me (cluster_nodes (all )) of
928- [] -> ok ;
929- AllNodes -> case lists : any ( fun leave_cluster / 1 , AllNodes ) of
930- true -> ok ;
931- false -> e ( no_running_cluster_nodes )
932- end
933- end .
934-
933+ leave_cluster ( rabbit_nodes :nodes_excl_me (cluster_nodes (all ))).
934+ leave_cluster ([]) ->
935+ ok ;
936+ leave_cluster ( Nodes ) when is_list ( Nodes ) ->
937+ case lists : any ( fun leave_cluster / 1 , Nodes ) of
938+ true -> ok ;
939+ false -> e ( no_running_cluster_nodes )
940+ end ;
935941leave_cluster (Node ) ->
936942 case rpc :call (Node ,
937943 rabbit_mnesia , remove_node_if_mnesia_running , [node ()]) of
0 commit comments