Skip to content

Commit 85dc3b1

Browse files
authored
Merge pull request #10353 from rabbitmq/list-running-opt
Do not contact disconnected nodes in rabbit_nodes:list_running/0
2 parents 6a3ba62 + d748215 commit 85dc3b1

File tree

4 files changed

+16
-28
lines changed

4 files changed

+16
-28
lines changed

deps/rabbit/src/rabbit_mnesia_rename.erl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ maybe_finish(AllNodes) ->
144144
finish(FromNode, ToNode, AllNodes) ->
145145
case node() of
146146
ToNode ->
147+
%% filter_running/1 does not perform reconnections so we need
148+
%% to do that manually
149+
_ = [net_kernel:connect_node(N) || N <- AllNodes],
147150
case rabbit_nodes:filter_running(AllNodes) of
148151
[] -> finish_primary(FromNode, ToNode);
149152
_ -> finish_secondary(FromNode, ToNode, AllNodes)

deps/rabbit/src/rabbit_node_monitor.erl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ notify_node_up() ->
168168

169169
notify_joined_cluster() ->
170170
NewMember = node(),
171-
Nodes = rabbit_nodes:list_running() -- [NewMember],
171+
Nodes = alive_rabbit_nodes() -- [NewMember],
172172
gen_server:abcast(Nodes, ?SERVER,
173173
{joined_cluster, node(), rabbit_db_cluster:node_type()}),
174174

@@ -177,7 +177,7 @@ notify_joined_cluster() ->
177177
-spec notify_left_cluster(node()) -> 'ok'.
178178

179179
notify_left_cluster(Node) ->
180-
Nodes = rabbit_nodes:list_running(),
180+
Nodes = alive_rabbit_nodes(),
181181
gen_server:abcast(Nodes, ?SERVER, {left_cluster, Node}),
182182
ok.
183183

@@ -1020,19 +1020,24 @@ alive_nodes() -> rabbit_nodes:list_reachable().
10201020

10211021
alive_nodes(Nodes) -> rabbit_nodes:filter_reachable(Nodes).
10221022

1023-
alive_rabbit_nodes() -> rabbit_nodes:list_running().
1023+
alive_rabbit_nodes() ->
1024+
alive_rabbit_nodes(rabbit_nodes:list_members()).
10241025

10251026
-spec alive_rabbit_nodes([node()]) -> [node()].
10261027

10271028
alive_rabbit_nodes(Nodes) ->
1029+
ok = ping(Nodes),
10281030
rabbit_nodes:filter_running(Nodes).
10291031

10301032
%% This one is allowed to connect!
10311033

10321034
-spec ping_all() -> 'ok'.
10331035

10341036
ping_all() ->
1035-
[net_adm:ping(N) || N <- rabbit_nodes:list_members()],
1037+
ping(rabbit_nodes:list_members()).
1038+
1039+
ping(Nodes) ->
1040+
_ = [net_adm:ping(N) || N <- Nodes],
10361041
ok.
10371042

10381043
possibly_partitioned_nodes() ->

deps/rabbit/src/rabbit_nodes.erl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,10 @@ filter_not_running(Nodes) ->
366366
do_filter_running(Members) ->
367367
%% All clustered members where `rabbit' is running, regardless if they are
368368
%% under maintenance or not.
369+
ReachableMembers = do_filter_reachable(Members),
369370
Rets = erpc:multicall(
370-
Members, rabbit, is_running, [], ?FILTER_RPC_TIMEOUT),
371-
RetPerMember = lists:zip(Members, Rets),
371+
ReachableMembers, rabbit, is_running, [], ?FILTER_RPC_TIMEOUT),
372+
RetPerMember = lists:zip(ReachableMembers, Rets),
372373
lists:filtermap(
373374
fun
374375
({Member, {ok, true}}) ->

deps/rabbit/test/clustering_management_SUITE.erl

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -924,29 +924,8 @@ change_cluster_when_node_offline(Config) ->
924924
assert_clustered([Rabbit, Hare]),
925925
ok = start_app(Config, Bunny),
926926
assert_not_clustered(Bunny),
927+
ok.
927928

928-
%% Now the same, but Rabbit is a RAM node, and we bring up Bunny
929-
%% before
930-
ok = stop_app(Config, Rabbit),
931-
ok = change_cluster_node_type(Config, Rabbit, ram),
932-
ok = start_app(Config, Rabbit),
933-
stop_join_start(Config, Bunny, Hare),
934-
assert_cluster_status(
935-
{[Rabbit, Hare, Bunny], [Hare, Bunny], [Rabbit, Hare, Bunny]},
936-
[Rabbit, Hare, Bunny]),
937-
ok = stop_app(Config, Rabbit),
938-
ok = stop_app(Config, Bunny),
939-
ok = reset(Config, Bunny),
940-
ok = start_app(Config, Bunny),
941-
assert_not_clustered(Bunny),
942-
assert_cluster_status({[Rabbit, Hare], [Hare], [Hare]}, [Hare]),
943-
assert_cluster_status(
944-
{[Rabbit, Hare, Bunny], [Hare, Bunny], [Hare, Bunny]},
945-
[Rabbit]),
946-
ok = start_app(Config, Rabbit),
947-
assert_cluster_status({[Rabbit, Hare], [Hare], [Rabbit, Hare]},
948-
[Rabbit, Hare]),
949-
assert_not_clustered(Bunny).
950929

951930
update_cluster_nodes(Config) ->
952931
[Rabbit, Hare, Bunny] = cluster_members(Config),

0 commit comments

Comments
 (0)