From 9eccfa09093dc798229fcaea757dd3308fbcd807 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Mon, 7 Aug 2023 22:28:37 +0400 Subject: [PATCH] refactor(router): isolate cleanup logic in router module --- apps/emqx/src/emqx_router.erl | 16 ++++++++++++++++ apps/emqx/src/emqx_router_helper.erl | 9 +-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/emqx/src/emqx_router.erl b/apps/emqx/src/emqx_router.erl index 95b6136a7..fcb9b4e45 100644 --- a/apps/emqx/src/emqx_router.erl +++ b/apps/emqx/src/emqx_router.erl @@ -46,6 +46,8 @@ do_delete_route/2 ]). +-export([cleanup_routes/1]). + -export([ match_routes/1, lookup_routes/1, @@ -70,6 +72,8 @@ -type dest() :: node() | {group(), node()}. +-dialyzer({nowarn_function, [cleanup_routes/1]}). + %%-------------------------------------------------------------------- %% Mnesia bootstrap %%-------------------------------------------------------------------- @@ -196,6 +200,18 @@ print_routes(Topic) -> match_routes(Topic) ). +-spec cleanup_routes(node()) -> ok. +cleanup_routes(Node) -> + Patterns = [ + #route{_ = '_', dest = Node}, + #route{_ = '_', dest = {'_', Node}} + ], + [ + mnesia:delete_object(?ROUTE_TAB, Route, write) + || Pat <- Patterns, + Route <- mnesia:match_object(?ROUTE_TAB, Pat, write) + ]. + call(Router, Msg) -> gen_server:call(Router, Msg, infinity). diff --git a/apps/emqx/src/emqx_router_helper.erl b/apps/emqx/src/emqx_router_helper.erl index 8d96bf81d..61573fcff 100644 --- a/apps/emqx/src/emqx_router_helper.erl +++ b/apps/emqx/src/emqx_router_helper.erl @@ -197,11 +197,4 @@ stats_fun() -> end. cleanup_routes(Node) -> - Patterns = [ - #route{_ = '_', dest = Node}, - #route{_ = '_', dest = {'_', Node}} - ], - [ - mnesia:delete_object(?ROUTE_TAB, Route, write) - || Pat <- Patterns, Route <- mnesia:match_object(?ROUTE_TAB, Pat, write) - ]. + emqx_router:cleanup_routes(Node).