@@ -178,9 +178,15 @@ can_join_cluster(DiscoveryNode) ->
178
178
rabbit_log :info (" Asked to join a cluster but already a member of it: ~tp " , [ClusterNodes ]),
179
179
{ok , already_member };
180
180
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 )
184
190
end
185
191
end .
186
192
@@ -924,14 +930,14 @@ remove_node_if_mnesia_running(Node) ->
924
930
end .
925
931
926
932
leave_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 ;
935
941
leave_cluster (Node ) ->
936
942
case rpc :call (Node ,
937
943
rabbit_mnesia , remove_node_if_mnesia_running , [node ()]) of
0 commit comments