diff --git a/deps/rabbit_common/src/rabbit_data_coercion.erl b/deps/rabbit_common/src/rabbit_data_coercion.erl index da498b1afac8..88a73288b43f 100644 --- a/deps/rabbit_common/src/rabbit_data_coercion.erl +++ b/deps/rabbit_common/src/rabbit_data_coercion.erl @@ -10,6 +10,7 @@ -export([to_binary/1, to_list/1, to_atom/1, to_integer/1, to_proplist/1, to_map/1]). -export([to_atom/2, atomize_keys/1, to_list_of_binaries/1]). -export([to_utf8_binary/1, to_unicode_charlist/1]). +-export([as_list/1]). -spec to_binary(Val :: binary() | list() | atom() | integer() | function()) -> binary(). to_binary(Val) when is_list(Val) -> list_to_binary(Val); @@ -109,3 +110,9 @@ to_unicode_charlist(Val) -> UnicodeValue -> UnicodeValue end. + +-spec as_list(list() | any()) -> [any()]. +as_list(Nodes) when is_list(Nodes) -> + Nodes; +as_list(Other) -> + [Other]. \ No newline at end of file diff --git a/deps/rabbitmq_peer_discovery_common/src/rabbit_peer_discovery_cleanup.erl b/deps/rabbitmq_peer_discovery_common/src/rabbit_peer_discovery_cleanup.erl index 8ca2301fe8c7..9cbb5828b84a 100644 --- a/deps/rabbitmq_peer_discovery_common/src/rabbit_peer_discovery_cleanup.erl +++ b/deps/rabbitmq_peer_discovery_common/src/rabbit_peer_discovery_cleanup.erl @@ -28,6 +28,8 @@ -compile(export_all). -endif. +-import(rabbit_data_coercion, [as_list/1]). + -define(CONFIG_MODULE, rabbit_peer_discovery_config). -define(CONFIG_KEY, node_cleanup). @@ -241,7 +243,7 @@ maybe_cleanup(State, UnreachableNodes) -> "Peer discovery: cleanup discovered unreachable nodes: ~tp", [UnreachableNodes], #{domain => ?RMQLOG_DOMAIN_PEER_DIS}), - case lists:subtract(UnreachableNodes, service_discovery_nodes()) of + case lists:subtract(as_list(UnreachableNodes), as_list(service_discovery_nodes())) of [] -> ?LOG_DEBUG( "Peer discovery: all unreachable nodes are still " @@ -304,7 +306,8 @@ unreachable_nodes() -> service_discovery_nodes() -> Module = rabbit_peer_discovery:backend(), case rabbit_peer_discovery:normalize(Module:list_nodes()) of - {ok, {Nodes, _Type}} -> + {ok, {OneOrMultipleNodes, _Type}} -> + Nodes = as_list(OneOrMultipleNodes), ?LOG_DEBUG( "Peer discovery cleanup: ~tp returned ~tp", [Module, Nodes],