Przeglądaj źródła

refactor(router): isolate cleanup logic in router module

Andrew Mayorov 2 lat temu
rodzic
commit
9eccfa0909

+ 16 - 0
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).
 

+ 1 - 8
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).