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