Skip to content

Commit 989d3fc

Browse files
Merge pull request #12811 from rabbitmq/mergify/bp/v4.0.x/pr-12809
Peer discovery cleanup: be more defensive (backport #12809)
2 parents 3ccd630 + 7e83a93 commit 989d3fc

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

deps/rabbit_common/src/rabbit_data_coercion.erl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
-export([to_binary/1, to_list/1, to_atom/1, to_integer/1, to_proplist/1, to_map/1]).
1111
-export([to_atom/2, atomize_keys/1, to_list_of_binaries/1]).
1212
-export([to_utf8_binary/1, to_unicode_charlist/1]).
13+
-export([as_list/1]).
1314

1415
-spec to_binary(Val :: binary() | list() | atom() | integer() | function()) -> binary().
1516
to_binary(Val) when is_list(Val) -> list_to_binary(Val);
@@ -109,3 +110,9 @@ to_unicode_charlist(Val) ->
109110
UnicodeValue ->
110111
UnicodeValue
111112
end.
113+
114+
-spec as_list(list() | any()) -> [any()].
115+
as_list(Nodes) when is_list(Nodes) ->
116+
Nodes;
117+
as_list(Other) ->
118+
[Other].

deps/rabbitmq_peer_discovery_common/src/rabbit_peer_discovery_cleanup.erl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
-compile(export_all).
2929
-endif.
3030

31+
-import(rabbit_data_coercion, [as_list/1]).
32+
3133
-define(CONFIG_MODULE, rabbit_peer_discovery_config).
3234
-define(CONFIG_KEY, node_cleanup).
3335

@@ -241,7 +243,7 @@ maybe_cleanup(State, UnreachableNodes) ->
241243
"Peer discovery: cleanup discovered unreachable nodes: ~tp",
242244
[UnreachableNodes],
243245
#{domain => ?RMQLOG_DOMAIN_PEER_DIS}),
244-
case lists:subtract(UnreachableNodes, service_discovery_nodes()) of
246+
case lists:subtract(as_list(UnreachableNodes), as_list(service_discovery_nodes())) of
245247
[] ->
246248
?LOG_DEBUG(
247249
"Peer discovery: all unreachable nodes are still "
@@ -304,7 +306,8 @@ unreachable_nodes() ->
304306
service_discovery_nodes() ->
305307
Module = rabbit_peer_discovery:backend(),
306308
case rabbit_peer_discovery:normalize(Module:list_nodes()) of
307-
{ok, {Nodes, _Type}} ->
309+
{ok, {OneOrMultipleNodes, _Type}} ->
310+
Nodes = as_list(OneOrMultipleNodes),
308311
?LOG_DEBUG(
309312
"Peer discovery cleanup: ~tp returned ~tp",
310313
[Module, Nodes],

0 commit comments

Comments
 (0)