chore(banned): Add banned shard

This commit is contained in:
k32 2021-06-28 14:04:47 +02:00
parent 98739224f6
commit 7c9861dbaa
3 changed files with 13 additions and 11 deletions

View File

@ -23,6 +23,8 @@
-define(Otherwise, true). -define(Otherwise, true).
-define(COMMON_SHARD, emqx_common_shard).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Banner %% Banner
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
@ -134,4 +136,3 @@
}). }).
-endif. -endif.

View File

@ -28,7 +28,7 @@
-define(APP, emqx). -define(APP, emqx).
-define(EMQX_SHARDS, [route_shard]). -define(EMQX_SHARDS, [?ROUTE_SHARD, ?COMMON_SHARD]).
-include("emqx_release.hrl"). -include("emqx_release.hrl").

View File

@ -51,6 +51,8 @@
-define(BANNED_TAB, ?MODULE). -define(BANNED_TAB, ?MODULE).
-rlog_shard({?COMMON_SHARD, ?BANNED_TAB}).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Mnesia bootstrap %% Mnesia bootstrap
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
@ -96,19 +98,19 @@ create(#{who := Who,
reason := Reason, reason := Reason,
at := At, at := At,
until := Until}) -> until := Until}) ->
mnesia:dirty_write(?BANNED_TAB, #banned{who = Who, ekka_mnesia:dirty_write(?BANNED_TAB, #banned{who = Who,
by = By, by = By,
reason = Reason, reason = Reason,
at = At, at = At,
until = Until}); until = Until});
create(Banned) when is_record(Banned, banned) -> create(Banned) when is_record(Banned, banned) ->
mnesia:dirty_write(?BANNED_TAB, Banned). ekka_mnesia:dirty_write(?BANNED_TAB, Banned).
-spec(delete({clientid, emqx_types:clientid()} -spec(delete({clientid, emqx_types:clientid()}
| {username, emqx_types:username()} | {username, emqx_types:username()}
| {peerhost, emqx_types:peerhost()}) -> ok). | {peerhost, emqx_types:peerhost()}) -> ok).
delete(Who) -> delete(Who) ->
mnesia:dirty_delete(?BANNED_TAB, Who). ekka_mnesia:dirty_delete(?BANNED_TAB, Who).
info(InfoKey) -> info(InfoKey) ->
mnesia:table_info(?BANNED_TAB, InfoKey). mnesia:table_info(?BANNED_TAB, InfoKey).
@ -129,7 +131,7 @@ handle_cast(Msg, State) ->
{noreply, State}. {noreply, State}.
handle_info({timeout, TRef, expire}, State = #{expiry_timer := TRef}) -> handle_info({timeout, TRef, expire}, State = #{expiry_timer := TRef}) ->
mnesia:async_dirty(fun expire_banned_items/1, [erlang:system_time(second)]), ekka_mnesia:transaction(?COMMON_SHARD, fun expire_banned_items/1, [erlang:system_time(second)]),
{noreply, ensure_expiry_timer(State), hibernate}; {noreply, ensure_expiry_timer(State), hibernate};
handle_info(Info, State) -> handle_info(Info, State) ->
@ -160,4 +162,3 @@ expire_banned_items(Now) ->
mnesia:delete_object(?BANNED_TAB, B, sticky_write); mnesia:delete_object(?BANNED_TAB, B, sticky_write);
(_, _Acc) -> ok (_, _Acc) -> ok
end, ok, ?BANNED_TAB). end, ok, ?BANNED_TAB).