From e76e94b497ec7af3186d91671148fd94519d65c5 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Thu, 27 Jun 2024 09:52:32 -0300 Subject: [PATCH] perf(mgmt): optimize bulk unsubscribe when registry is enabled --- apps/emqx_management/src/emqx_mgmt.erl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index afb88692e..7631426c5 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -626,7 +626,18 @@ do_unsubscribe(ClientId, Topic) -> -spec unsubscribe_batch(emqx_types:clientid(), [emqx_types:topic()]) -> {unsubscribe, _} | {error, channel_not_found}. unsubscribe_batch(ClientId, Topics) -> - unsubscribe_batch(emqx:running_nodes(), ClientId, Topics). + case emqx_cm_registry:is_enabled() of + false -> + unsubscribe_batch(emqx:running_nodes(), ClientId, Topics); + true -> + with_client_node( + ClientId, + {error, channel_not_found}, + fun(Node) -> + unsubscribe_batch([Node], ClientId, Topics) + end + ) + end. -spec unsubscribe_batch([node()], emqx_types:clientid(), [emqx_types:topic()]) -> {unsubscribe_batch, _} | {error, channel_not_found}.