firest 3 лет назад
Родитель
Сommit
bdaadda479

+ 1 - 0
apps/emqx_management/src/emqx_mgmt_api_banned.erl

@@ -155,6 +155,7 @@ fields(ban) ->
             hoconsc:mk(boolean(), #{
             hoconsc:mk(boolean(), #{
                 desc => ?DESC(clean),
                 desc => ?DESC(clean),
                 required => false,
                 required => false,
+                default => false,
                 example => false
                 example => false
             })}
             })}
     ].
     ].

+ 1 - 2
apps/emqx_modules/src/emqx_delayed.erl

@@ -263,8 +263,7 @@ post_config_update(_KeyPath, _ConfigReq, NewConf, _OldConf, _AppEnvs) ->
 
 
 clean_by_clientid(ClientId) ->
 clean_by_clientid(ClientId) ->
     Nodes = mria_mnesia:running_nodes(),
     Nodes = mria_mnesia:running_nodes(),
-    _ = [emqx_delayed_proto_v2:clean_by_clientid(Node, ClientId) || Node <- Nodes],
-    ok.
+    emqx_delayed_proto_v2:clean_by_clientid(Nodes, ClientId).
 
 
 do_clean_by_clientid(ClientId) ->
 do_clean_by_clientid(ClientId) ->
     ets:select_delete(
     ets:select_delete(

+ 6 - 4
apps/emqx_modules/src/proto/emqx_delayed_proto_v2.erl

@@ -27,6 +27,8 @@
 
 
 -include_lib("emqx/include/bpapi.hrl").
 -include_lib("emqx/include/bpapi.hrl").
 
 
+-define(TIMEOUT, 15000).
+
 introduced_in() ->
 introduced_in() ->
     "5.0.9".
     "5.0.9".
 
 
@@ -39,7 +41,7 @@ get_delayed_message(Node, Id) ->
 delete_delayed_message(Node, Id) ->
 delete_delayed_message(Node, Id) ->
     rpc:call(Node, emqx_delayed, delete_delayed_message, [Id]).
     rpc:call(Node, emqx_delayed, delete_delayed_message, [Id]).
 
 
--spec clean_by_clientid(node(), emqx_types:clientid()) ->
-    emqx_delayed:with_id_return() | emqx_rpc:badrpc().
-clean_by_clientid(Node, ClientID) ->
-    rpc:call(Node, emqx_delayed, do_clean_by_clientid, [ClientID]).
+-spec clean_by_clientid(list(node()), emqx_types:clientid()) ->
+    emqx_rpc:erpc_multicall().
+clean_by_clientid(Nodes, ClientID) ->
+    erpc:multicall(Nodes, emqx_delayed, do_clean_by_clientid, [ClientID], ?TIMEOUT).

+ 17 - 15
apps/emqx_modules/test/emqx_delayed_SUITE.erl

@@ -252,21 +252,23 @@ t_banned_clean(_) ->
 
 
     Now = erlang:system_time(second),
     Now = erlang:system_time(second),
     Who = {clientid, ClientId2},
     Who = {clientid, ClientId2},
-    emqx_banned:create(#{
-        who => Who,
-        by => <<"test">>,
-        reason => <<"test">>,
-        at => Now,
-        until => Now + 120,
-        clean => true
-    }),
-
-    timer:sleep(500),
-
-    ?assertMatch(#{meta := #{count := 2}}, emqx_delayed:list(#{page => 1, limit => 10})),
-
-    emqx_banned:delete(Who),
-    emqx_delayed:clean_by_clientid(ClientId1),
+    try
+        emqx_banned:create(#{
+            who => Who,
+            by => <<"test">>,
+            reason => <<"test">>,
+            at => Now,
+            until => Now + 120,
+            clean => true
+        }),
+
+        timer:sleep(500),
+
+        ?assertMatch(#{meta := #{count := 2}}, emqx_delayed:list(#{page => 1, limit => 10}))
+    after
+        emqx_banned:delete(Who),
+        emqx_delayed:clean_by_clientid(ClientId1)
+    end,
     timer:sleep(500),
     timer:sleep(500),
     ok = emqtt:disconnect(C1),
     ok = emqtt:disconnect(C1),
     ok = emqtt:disconnect(C2).
     ok = emqtt:disconnect(C2).