23
23
list_nodes () ->
24
24
case application :get_env (rabbit , cluster_nodes , {[], disc }) of
25
25
{Nodes , NodeType } ->
26
+ check_local_node (Nodes ),
27
+ check_duplicates (Nodes ),
26
28
{ok , {add_this_node (Nodes ), NodeType }};
27
29
Nodes when is_list (Nodes ) ->
30
+ check_local_node (Nodes ),
31
+ check_duplicates (Nodes ),
28
32
{ok , {add_this_node (Nodes ), disc }}
29
33
end .
30
34
@@ -35,6 +39,26 @@ add_this_node(Nodes) ->
35
39
false -> [ThisNode | Nodes ]
36
40
end .
37
41
42
+ check_duplicates (Nodes ) ->
43
+ case (length (lists :usort (Nodes )) == length (Nodes )) of
44
+ true ->
45
+ ok ;
46
+ false ->
47
+ rabbit_log :warning (" Classic peer discovery backend: list of "
48
+ " nodes contains duplicates ~0tp " ,
49
+ [Nodes ])
50
+ end .
51
+
52
+ check_local_node (Nodes ) ->
53
+ case lists :member (node (), Nodes ) of
54
+ true ->
55
+ ok ;
56
+ false ->
57
+ rabbit_log :warning (" Classic peer discovery backend: list of "
58
+ " nodes does not contain the local node ~0tp " ,
59
+ [Nodes ])
60
+ end .
61
+
38
62
-spec lock (Nodes :: [node ()]) ->
39
63
{ok , {{ResourceId :: string (), LockRequesterId :: node ()}, Nodes :: [node ()]}} |
40
64
{error , Reason :: string ()}.
0 commit comments