chore(mria): Rename module: ekka_mnesia -> mria

This commit is contained in:
k32 2021-10-14 18:24:59 +02:00 committed by x1001100011
parent 591b704f65
commit fd482e2ec0
25 changed files with 109 additions and 110 deletions

View File

@ -15,7 +15,7 @@
, {jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.5"}}} , {jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.5"}}}
, {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.8.3"}}} , {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.8.3"}}}
, {esockd, {git, "https://github.com/emqx/esockd", {tag, "5.9.0"}}} , {esockd, {git, "https://github.com/emqx/esockd", {tag, "5.9.0"}}}
, {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.10.9"}}} , {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.11.0"}}}
, {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.5.1"}}} , {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.5.1"}}}
, {hocon, {git, "https://github.com/emqx/hocon.git", {tag, "0.19.6"}}} , {hocon, {git, "https://github.com/emqx/hocon.git", {tag, "0.19.6"}}}
, {pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {tag, "2.0.4"}}} , {pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {tag, "2.0.4"}}}

View File

@ -201,7 +201,7 @@ handle_call({activate_alarm, Name, Details}, _From, State) ->
details = Details, details = Details,
message = normalize_message(Name, Details), message = normalize_message(Name, Details),
activate_at = erlang:system_time(microsecond)}, activate_at = erlang:system_time(microsecond)},
ekka_mnesia:dirty_write(?ACTIVATED_ALARM, Alarm), mria:dirty_write(?ACTIVATED_ALARM, Alarm),
do_actions(activate, Alarm, emqx:get_config([alarm, actions])), do_actions(activate, Alarm, emqx:get_config([alarm, actions])),
{reply, ok, State} {reply, ok, State}
end; end;
@ -282,7 +282,7 @@ deactivate_alarm(Details, #activated_alarm{activate_at = ActivateAt, name = Name
case mnesia:dirty_first(?DEACTIVATED_ALARM) of case mnesia:dirty_first(?DEACTIVATED_ALARM) of
'$end_of_table' -> ok; '$end_of_table' -> ok;
ActivateAt2 -> ActivateAt2 ->
ekka_mnesia:dirty_delete(?DEACTIVATED_ALARM, ActivateAt2) mria:dirty_delete(?DEACTIVATED_ALARM, ActivateAt2)
end; end;
false -> ok false -> ok
end, end,
@ -291,8 +291,8 @@ deactivate_alarm(Details, #activated_alarm{activate_at = ActivateAt, name = Name
DeActAlarm = make_deactivated_alarm(ActivateAt, Name, Details, DeActAlarm = make_deactivated_alarm(ActivateAt, Name, Details,
normalize_message(Name, Details), normalize_message(Name, Details),
erlang:system_time(microsecond)), erlang:system_time(microsecond)),
ekka_mnesia:dirty_write(?DEACTIVATED_ALARM, HistoryAlarm), mria:dirty_write(?DEACTIVATED_ALARM, HistoryAlarm),
ekka_mnesia:dirty_delete(?ACTIVATED_ALARM, Name), mria:dirty_delete(?ACTIVATED_ALARM, Name),
do_actions(deactivate, DeActAlarm, emqx:get_config([alarm, actions])). do_actions(deactivate, DeActAlarm, emqx:get_config([alarm, actions])).
make_deactivated_alarm(ActivateAt, Name, Details, Message, DeActivateAt) -> make_deactivated_alarm(ActivateAt, Name, Details, Message, DeActivateAt) ->
@ -309,7 +309,7 @@ deactivate_all_alarms() ->
details = Details, details = Details,
message = Message, message = Message,
activate_at = ActivateAt}) -> activate_at = ActivateAt}) ->
ekka_mnesia:dirty_write(?DEACTIVATED_ALARM, mria:dirty_write(?DEACTIVATED_ALARM,
#deactivated_alarm{ #deactivated_alarm{
activate_at = ActivateAt, activate_at = ActivateAt,
name = Name, name = Name,
@ -347,7 +347,7 @@ delete_expired_deactivated_alarms('$end_of_table', _Checkpoint) ->
delete_expired_deactivated_alarms(ActivatedAt, Checkpoint) -> delete_expired_deactivated_alarms(ActivatedAt, Checkpoint) ->
case ActivatedAt =< Checkpoint of case ActivatedAt =< Checkpoint of
true -> true ->
ekka_mnesia:dirty_delete(?DEACTIVATED_ALARM, ActivatedAt), mria:dirty_delete(?DEACTIVATED_ALARM, ActivatedAt),
NActivatedAt = mnesia:dirty_next(?DEACTIVATED_ALARM, ActivatedAt), NActivatedAt = mnesia:dirty_next(?DEACTIVATED_ALARM, ActivatedAt),
delete_expired_deactivated_alarms(NActivatedAt, Checkpoint); delete_expired_deactivated_alarms(NActivatedAt, Checkpoint);
false -> false ->

View File

@ -155,13 +155,13 @@ create(#{who := Who,
reason := Reason, reason := Reason,
at := At, at := At,
until := Until}) -> until := Until}) ->
ekka_mnesia:dirty_write(?BANNED_TAB, #banned{who = Who, mria: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) ->
ekka_mnesia:dirty_write(?BANNED_TAB, Banned). mria:dirty_write(?BANNED_TAB, Banned).
look_up(Who) when is_map(Who) -> look_up(Who) when is_map(Who) ->
look_up(pares_who(Who)); look_up(pares_who(Who));
@ -174,7 +174,7 @@ look_up(Who) ->
delete(Who) when is_map(Who)-> delete(Who) when is_map(Who)->
delete(pares_who(Who)); delete(pares_who(Who));
delete(Who) -> delete(Who) ->
ekka_mnesia:dirty_delete(?BANNED_TAB, Who). mria:dirty_delete(?BANNED_TAB, Who).
info(InfoKey) -> info(InfoKey) ->
mnesia:table_info(?BANNED_TAB, InfoKey). mnesia:table_info(?BANNED_TAB, InfoKey).
@ -195,7 +195,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}) ->
ekka_mnesia:transaction(?COMMON_SHARD, fun expire_banned_items/1, [erlang:system_time(second)]), mria: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) ->

View File

@ -71,7 +71,7 @@ register_channel(ClientId) when is_binary(ClientId) ->
register_channel({ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) -> register_channel({ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) ->
case is_enabled() of case is_enabled() of
true -> ekka_mnesia:dirty_write(?TAB, record(ClientId, ChanPid)); true -> mria:dirty_write(?TAB, record(ClientId, ChanPid));
false -> ok false -> ok
end. end.
@ -83,7 +83,7 @@ unregister_channel(ClientId) when is_binary(ClientId) ->
unregister_channel({ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) -> unregister_channel({ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) ->
case is_enabled() of case is_enabled() of
true -> ekka_mnesia:dirty_delete_object(?TAB, record(ClientId, ChanPid)); true -> mria:dirty_delete_object(?TAB, record(ClientId, ChanPid));
false -> ok false -> ok
end. end.
@ -124,7 +124,7 @@ handle_cast(Msg, State) ->
handle_info({membership, {mnesia, down, Node}}, State) -> handle_info({membership, {mnesia, down, Node}}, State) ->
global:trans({?LOCK, self()}, global:trans({?LOCK, self()},
fun() -> fun() ->
ekka_mnesia:transaction(?CM_SHARD, fun cleanup_channels/1, [Node]) mria:transaction(?CM_SHARD, fun cleanup_channels/1, [Node])
end), end),
{noreply, State}; {noreply, State};

View File

@ -225,7 +225,7 @@ code_change(_OldVsn, State, _Extra) ->
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
insert_direct_route(Route) -> insert_direct_route(Route) ->
ekka_mnesia:dirty_write(?ROUTE_TAB, Route). mria:dirty_write(?ROUTE_TAB, Route).
insert_trie_route(Route = #route{topic = Topic}) -> insert_trie_route(Route = #route{topic = Topic}) ->
case mnesia:wread({?ROUTE_TAB, Topic}) of case mnesia:wread({?ROUTE_TAB, Topic}) of
@ -235,7 +235,7 @@ insert_trie_route(Route = #route{topic = Topic}) ->
mnesia:write(?ROUTE_TAB, Route, sticky_write). mnesia:write(?ROUTE_TAB, Route, sticky_write).
delete_direct_route(Route) -> delete_direct_route(Route) ->
ekka_mnesia:dirty_delete_object(?ROUTE_TAB, Route). mria:dirty_delete_object(?ROUTE_TAB, Route).
delete_trie_route(Route = #route{topic = Topic}) -> delete_trie_route(Route = #route{topic = Topic}) ->
case mnesia:wread({?ROUTE_TAB, Topic}) of case mnesia:wread({?ROUTE_TAB, Topic}) of
@ -280,7 +280,7 @@ trans(Fun, Args) ->
%% Future changes should keep in mind that this process %% Future changes should keep in mind that this process
%% always exit with database write result. %% always exit with database write result.
fun() -> fun() ->
Res = case ekka_mnesia:transaction(?ROUTE_SHARD, Fun, Args) of Res = case mria:transaction(?ROUTE_SHARD, Fun, Args) of
{atomic, Ok} -> Ok; {atomic, Ok} -> Ok;
{aborted, Reason} -> {error, Reason} {aborted, Reason} -> {error, Reason}
end, end,

View File

@ -87,7 +87,7 @@ monitor(Node) when is_atom(Node) ->
case ekka:is_member(Node) case ekka:is_member(Node)
orelse ets:member(?ROUTING_NODE, Node) of orelse ets:member(?ROUTING_NODE, Node) of
true -> ok; true -> ok;
false -> ekka_mnesia:dirty_write(?ROUTING_NODE, #routing_node{name = Node}) false -> mria:dirty_write(?ROUTING_NODE, #routing_node{name = Node})
end. end.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
@ -136,9 +136,9 @@ handle_info({mnesia_table_event, Event}, State) ->
handle_info({nodedown, Node}, State = #{nodes := Nodes}) -> handle_info({nodedown, Node}, State = #{nodes := Nodes}) ->
global:trans({?LOCK, self()}, global:trans({?LOCK, self()},
fun() -> fun() ->
ekka_mnesia:transaction(fun cleanup_routes/1, [Node]) mria:transaction(fun cleanup_routes/1, [Node])
end), end),
ok = ekka_mnesia:dirty_delete(?ROUTING_NODE, Node), ok = mria:dirty_delete(?ROUTING_NODE, Node),
{noreply, State#{nodes := lists:delete(Node, Nodes)}, hibernate}; {noreply, State#{nodes := lists:delete(Node, Nodes)}, hibernate};
handle_info({membership, {mnesia, down, Node}}, State) -> handle_info({membership, {mnesia, down, Node}}, State) ->

View File

@ -297,7 +297,7 @@ subscribers(Group, Topic) ->
init([]) -> init([]) ->
{ok, _} = mnesia:subscribe({table, ?TAB, simple}), {ok, _} = mnesia:subscribe({table, ?TAB, simple}),
{atomic, PMon} = ekka_mnesia:transaction(?SHARED_SUB_SHARD, fun init_monitors/0), {atomic, PMon} = mria:transaction(?SHARED_SUB_SHARD, fun init_monitors/0),
ok = emqx_tables:new(?SHARED_SUBS, [protected, bag]), ok = emqx_tables:new(?SHARED_SUBS, [protected, bag]),
ok = emqx_tables:new(?ALIVE_SUBS, [protected, set, {read_concurrency, true}]), ok = emqx_tables:new(?ALIVE_SUBS, [protected, set, {read_concurrency, true}]),
{ok, update_stats(#state{pmon = PMon})}. {ok, update_stats(#state{pmon = PMon})}.
@ -309,7 +309,7 @@ init_monitors() ->
end, emqx_pmon:new(), ?TAB). end, emqx_pmon:new(), ?TAB).
handle_call({subscribe, Group, Topic, SubPid}, _From, State = #state{pmon = PMon}) -> handle_call({subscribe, Group, Topic, SubPid}, _From, State = #state{pmon = PMon}) ->
ekka_mnesia:dirty_write(?TAB, record(Group, Topic, SubPid)), mria:dirty_write(?TAB, record(Group, Topic, SubPid)),
case ets:member(?SHARED_SUBS, {Group, Topic}) of case ets:member(?SHARED_SUBS, {Group, Topic}) of
true -> ok; true -> ok;
false -> ok = emqx_router:do_add_route(Topic, {Group, node()}) false -> ok = emqx_router:do_add_route(Topic, {Group, node()})
@ -319,7 +319,7 @@ handle_call({subscribe, Group, Topic, SubPid}, _From, State = #state{pmon = PMon
{reply, ok, update_stats(State#state{pmon = emqx_pmon:monitor(SubPid, PMon)})}; {reply, ok, update_stats(State#state{pmon = emqx_pmon:monitor(SubPid, PMon)})};
handle_call({unsubscribe, Group, Topic, SubPid}, _From, State) -> handle_call({unsubscribe, Group, Topic, SubPid}, _From, State) ->
ekka_mnesia:dirty_delete_object(?TAB, record(Group, Topic, SubPid)), mria:dirty_delete_object(?TAB, record(Group, Topic, SubPid)),
true = ets:delete_object(?SHARED_SUBS, {{Group, Topic}, SubPid}), true = ets:delete_object(?SHARED_SUBS, {{Group, Topic}, SubPid}),
delete_route_if_needed({Group, Topic}), delete_route_if_needed({Group, Topic}),
{reply, ok, State}; {reply, ok, State};
@ -373,7 +373,7 @@ cleanup_down(SubPid) ->
?IS_LOCAL_PID(SubPid) orelse ets:delete(?ALIVE_SUBS, SubPid), ?IS_LOCAL_PID(SubPid) orelse ets:delete(?ALIVE_SUBS, SubPid),
lists:foreach( lists:foreach(
fun(Record = #emqx_shared_subscription{topic = Topic, group = Group}) -> fun(Record = #emqx_shared_subscription{topic = Topic, group = Group}) ->
ok = ekka_mnesia:dirty_delete_object(?TAB, Record), ok = mria:dirty_delete_object(?TAB, Record),
true = ets:delete_object(?SHARED_SUBS, {{Group, Topic}, SubPid}), true = ets:delete_object(?SHARED_SUBS, {{Group, Topic}, SubPid}),
delete_route_if_needed({Group, Topic}) delete_route_if_needed({Group, Topic})
end, mnesia:dirty_match_object(#emqx_shared_subscription{_ = '_', subpid = SubPid})). end, mnesia:dirty_match_object(#emqx_shared_subscription{_ = '_', subpid = SubPid})).

View File

@ -29,7 +29,7 @@
[ emqx_metrics [ emqx_metrics
, emqx_stats , emqx_stats
, emqx_broker , emqx_broker
, ekka_mnesia , mria_mnesia
]). ]).
-define(ALL(Vars, Types, Exprs), -define(ALL(Vars, Types, Exprs),

View File

@ -268,7 +268,7 @@ trans(Fun) ->
trans(Fun, []). trans(Fun, []).
trans(Fun, Args) -> trans(Fun, Args) ->
case ekka_mnesia:transaction(?AUTH_SHARD, Fun, Args) of case mria:transaction(?AUTH_SHARD, Fun, Args) of
{atomic, Res} -> Res; {atomic, Res} -> Res;
{aborted, Reason} -> {error, Reason} {aborted, Reason} -> {error, Reason}
end. end.

View File

@ -390,7 +390,7 @@ trans(Fun) ->
trans(Fun, []). trans(Fun, []).
trans(Fun, Args) -> trans(Fun, Args) ->
case ekka_mnesia:transaction(?AUTH_SHARD, Fun, Args) of case mria:transaction(?AUTH_SHARD, Fun, Args) of
{atomic, Res} -> Res; {atomic, Res} -> Res;
{aborted, Reason} -> {error, Reason} {aborted, Reason} -> {error, Reason}
end. end.

View File

@ -528,10 +528,10 @@ users(get, #{query_string := Qs}) ->
end; end;
users(post, #{body := Body}) when is_list(Body) -> users(post, #{body := Body}) when is_list(Body) ->
lists:foreach(fun(#{<<"username">> := Username, <<"rules">> := Rules}) -> lists:foreach(fun(#{<<"username">> := Username, <<"rules">> := Rules}) ->
ekka_mnesia:dirty_write(#emqx_acl{ mria:dirty_write(#emqx_acl{
who = {?ACL_TABLE_USERNAME, Username}, who = {?ACL_TABLE_USERNAME, Username},
rules = format_rules(Rules) rules = format_rules(Rules)
}) })
end, Body), end, Body),
{204}. {204}.
@ -561,10 +561,10 @@ clients(get, #{query_string := Qs}) ->
end; end;
clients(post, #{body := Body}) when is_list(Body) -> clients(post, #{body := Body}) when is_list(Body) ->
lists:foreach(fun(#{<<"clientid">> := Clientid, <<"rules">> := Rules}) -> lists:foreach(fun(#{<<"clientid">> := Clientid, <<"rules">> := Rules}) ->
ekka_mnesia:dirty_write(#emqx_acl{ mria:dirty_write(#emqx_acl{
who = {?ACL_TABLE_CLIENTID, Clientid}, who = {?ACL_TABLE_CLIENTID, Clientid},
rules = format_rules(Rules) rules = format_rules(Rules)
}) })
end, Body), end, Body),
{204}. {204}.
@ -581,13 +581,13 @@ user(get, #{bindings := #{username := Username}}) ->
end; end;
user(put, #{bindings := #{username := Username}, user(put, #{bindings := #{username := Username},
body := #{<<"username">> := Username, <<"rules">> := Rules}}) -> body := #{<<"username">> := Username, <<"rules">> := Rules}}) ->
ekka_mnesia:dirty_write(#emqx_acl{ mria:dirty_write(#emqx_acl{
who = {?ACL_TABLE_USERNAME, Username}, who = {?ACL_TABLE_USERNAME, Username},
rules = format_rules(Rules) rules = format_rules(Rules)
}), }),
{204}; {204};
user(delete, #{bindings := #{username := Username}}) -> user(delete, #{bindings := #{username := Username}}) ->
ekka_mnesia:dirty_delete({?ACL_TABLE, {?ACL_TABLE_USERNAME, Username}}), mria:dirty_delete({?ACL_TABLE, {?ACL_TABLE_USERNAME, Username}}),
{204}. {204}.
client(get, #{bindings := #{clientid := Clientid}}) -> client(get, #{bindings := #{clientid := Clientid}}) ->
@ -603,13 +603,13 @@ client(get, #{bindings := #{clientid := Clientid}}) ->
end; end;
client(put, #{bindings := #{clientid := Clientid}, client(put, #{bindings := #{clientid := Clientid},
body := #{<<"clientid">> := Clientid, <<"rules">> := Rules}}) -> body := #{<<"clientid">> := Clientid, <<"rules">> := Rules}}) ->
ekka_mnesia:dirty_write(#emqx_acl{ mria:dirty_write(#emqx_acl{
who = {?ACL_TABLE_CLIENTID, Clientid}, who = {?ACL_TABLE_CLIENTID, Clientid},
rules = format_rules(Rules) rules = format_rules(Rules)
}), }),
{204}; {204};
client(delete, #{bindings := #{clientid := Clientid}}) -> client(delete, #{bindings := #{clientid := Clientid}}) ->
ekka_mnesia:dirty_delete({?ACL_TABLE, {?ACL_TABLE_CLIENTID, Clientid}}), mria:dirty_delete({?ACL_TABLE, {?ACL_TABLE_CLIENTID, Clientid}}),
{204}. {204}.
all(get, _) -> all(get, _) ->
@ -624,17 +624,17 @@ all(get, _) ->
} }
end; end;
all(put, #{body := #{<<"rules">> := Rules}}) -> all(put, #{body := #{<<"rules">> := Rules}}) ->
ekka_mnesia:dirty_write(#emqx_acl{ mria:dirty_write(#emqx_acl{
who = ?ACL_TABLE_ALL, who = ?ACL_TABLE_ALL,
rules = format_rules(Rules) rules = format_rules(Rules)
}), }),
{204}. {204}.
purge(delete, _) -> purge(delete, _) ->
case emqx_authz_api_sources:get_raw_source(<<"built-in-database">>) of case emqx_authz_api_sources:get_raw_source(<<"built-in-database">>) of
[#{<<"enable">> := false}] -> [#{<<"enable">> := false}] ->
ok = lists:foreach(fun(Key) -> ok = lists:foreach(fun(Key) ->
ok = ekka_mnesia:dirty_delete(?ACL_TABLE, Key) ok = mria:dirty_delete(?ACL_TABLE, Key)
end, mnesia:dirty_all_keys(?ACL_TABLE)), end, mnesia:dirty_all_keys(?ACL_TABLE)),
{204}; {204};
[#{<<"enable">> := true}] -> [#{<<"enable">> := true}] ->

View File

@ -54,24 +54,24 @@ end_per_suite(_Config) ->
ok. ok.
init_per_testcase(t_authz, Config) -> init_per_testcase(t_authz, Config) ->
mnesia:transaction(fun ekka_mnesia:dirty_write/1, [#emqx_acl{who = {?ACL_TABLE_USERNAME, <<"test_username">>}, mnesia:transaction(fun mria:dirty_write/1, [#emqx_acl{who = {?ACL_TABLE_USERNAME, <<"test_username">>},
rules = [{allow, publish, <<"test/%u">>}, rules = [{allow, publish, <<"test/%u">>},
{allow, subscribe, <<"eq #">>} {allow, subscribe, <<"eq #">>}
] ]
}]),
mnesia:transaction(fun ekka_mnesia:dirty_write/1, [#emqx_acl{who = {?ACL_TABLE_CLIENTID, <<"test_clientid">>},
rules = [{allow, publish, <<"test/%c">>},
{deny, subscribe, <<"eq #">>}
]
}]),
mnesia:transaction(fun ekka_mnesia:dirty_write/1, [#emqx_acl{who = ?ACL_TABLE_ALL,
rules = [{deny, all, <<"#">>}]
}]), }]),
mnesia:transaction(fun mria:dirty_write/1, [#emqx_acl{who = {?ACL_TABLE_CLIENTID, <<"test_clientid">>},
rules = [{allow, publish, <<"test/%c">>},
{deny, subscribe, <<"eq #">>}
]
}]),
mnesia:transaction(fun mria:dirty_write/1, [#emqx_acl{who = ?ACL_TABLE_ALL,
rules = [{deny, all, <<"#">>}]
}]),
Config; Config;
init_per_testcase(_, Config) -> Config. init_per_testcase(_, Config) -> Config.
end_per_testcase(t_authz, Config) -> end_per_testcase(t_authz, Config) ->
[ ekka_mnesia:dirty_delete(?ACL_TABLE, K) || K <- mnesia:dirty_all_keys(?ACL_TABLE)], [ mria:dirty_delete(?ACL_TABLE, K) || K <- mnesia:dirty_all_keys(?ACL_TABLE)],
Config; Config;
end_per_testcase(_, Config) -> Config. end_per_testcase(_, Config) -> Config.
@ -96,7 +96,7 @@ t_authz(_) ->
listener => {tcp, default} listener => {tcp, default}
}, },
?assertEqual(deny, emqx_access_control:authorize(ClientInfo1, subscribe, <<"#">>)), ?assertEqual(deny, emqx_access_control:authorize(ClientInfo1, subscribe, <<"#">>)),
?assertEqual(deny, emqx_access_control:authorize(ClientInfo1, publish, <<"#">>)), ?assertEqual(deny, emqx_access_control:authorize(ClientInfo1, publish, <<"#">>)),
?assertEqual(allow, emqx_access_control:authorize(ClientInfo2, publish, <<"test/test_username">>)), ?assertEqual(allow, emqx_access_control:authorize(ClientInfo2, publish, <<"test/test_username">>)),
@ -106,4 +106,3 @@ t_authz(_) ->
?assertEqual(deny, emqx_access_control:authorize(ClientInfo3, subscribe, <<"#">>)), ?assertEqual(deny, emqx_access_control:authorize(ClientInfo3, subscribe, <<"#">>)),
ok. ok.

View File

@ -68,7 +68,7 @@ mnesia(copy) ->
-spec(add_user(binary(), binary(), binary()) -> ok | {error, any()}). -spec(add_user(binary(), binary(), binary()) -> ok | {error, any()}).
add_user(Username, Password, Tags) when is_binary(Username), is_binary(Password) -> add_user(Username, Password, Tags) when is_binary(Username), is_binary(Password) ->
Admin = #mqtt_admin{username = Username, password = hash(Password), tags = Tags}, Admin = #mqtt_admin{username = Username, password = hash(Password), tags = Tags},
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, fun add_user_/1, [Admin])). return(mria:transaction(?DASHBOARD_SHARD, fun add_user_/1, [Admin])).
force_add_user(Username, Password, Tags) -> force_add_user(Username, Password, Tags) ->
AddFun = fun() -> AddFun = fun() ->
@ -76,7 +76,7 @@ force_add_user(Username, Password, Tags) ->
password = Password, password = Password,
tags = Tags}) tags = Tags})
end, end,
case ekka_mnesia:transaction(?DASHBOARD_SHARD, AddFun) of case mria:transaction(?DASHBOARD_SHARD, AddFun) of
{atomic, ok} -> ok; {atomic, ok} -> ok;
{aborted, Reason} -> {error, Reason} {aborted, Reason} -> {error, Reason}
end. end.
@ -98,11 +98,11 @@ remove_user(Username) when is_binary(Username) ->
end, end,
mnesia:delete({mqtt_admin, Username}) mnesia:delete({mqtt_admin, Username})
end, end,
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, Trans)). return(mria:transaction(?DASHBOARD_SHARD, Trans)).
-spec(update_user(binary(), binary()) -> ok | {error, term()}). -spec(update_user(binary(), binary()) -> ok | {error, term()}).
update_user(Username, Tags) when is_binary(Username) -> update_user(Username, Tags) when is_binary(Username) ->
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, fun update_user_/2, [Username, Tags])). return(mria:transaction(?DASHBOARD_SHARD, fun update_user_/2, [Username, Tags])).
%% @private %% @private
update_user_(Username, Tags) -> update_user_(Username, Tags) ->
@ -135,7 +135,7 @@ update_pwd(Username, Fun) ->
end, end,
mnesia:write(Fun(User)) mnesia:write(Fun(User))
end, end,
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, Trans)). return(mria:transaction(?DASHBOARD_SHARD, Trans)).
-spec(lookup_user(binary()) -> [mqtt_admin()]). -spec(lookup_user(binary()) -> [mqtt_admin()]).

View File

@ -162,7 +162,7 @@ flush({Connection, Route, Subscription}, {Received0, Sent0, Dropped0}) ->
diff(Sent, Sent0), diff(Sent, Sent0),
diff(Dropped, Dropped0)}, diff(Dropped, Dropped0)},
Ts = get_local_time(), Ts = get_local_time(),
ekka_mnesia:transaction(ekka_mnesia:local_content_shard(), mria:transaction(ekka_mnesia:local_content_shard(),
fun mnesia:write/1, [#mqtt_collect{timestamp = Ts, collect = Collect}]), fun mnesia:write/1, [#mqtt_collect{timestamp = Ts, collect = Collect}]),
{Received, Sent, Dropped}. {Received, Sent, Dropped}.

View File

@ -104,7 +104,7 @@ do_sign(Username, Password) ->
Signed = jose_jwt:sign(JWK, JWS, JWT), Signed = jose_jwt:sign(JWK, JWS, JWT),
{_, Token} = jose_jws:compact(Signed), {_, Token} = jose_jws:compact(Signed),
JWTRec = format(Token, Username, ExpTime), JWTRec = format(Token, Username, ExpTime),
ekka_mnesia:transaction(?DASHBOARD_SHARD, fun mnesia:write/1, [JWTRec]), mria:transaction(?DASHBOARD_SHARD, fun mnesia:write/1, [JWTRec]),
{ok, Token}. {ok, Token}.
do_verify(Token)-> do_verify(Token)->
@ -113,7 +113,7 @@ do_verify(Token)->
case ExpTime > erlang:system_time(millisecond) of case ExpTime > erlang:system_time(millisecond) of
true -> true ->
NewJWT = JWT#mqtt_admin_jwt{exptime = jwt_expiration_time()}, NewJWT = JWT#mqtt_admin_jwt{exptime = jwt_expiration_time()},
{atomic, Res} = ekka_mnesia:transaction(?DASHBOARD_SHARD, fun mnesia:write/1, [NewJWT]), {atomic, Res} = mria:transaction(?DASHBOARD_SHARD, fun mnesia:write/1, [NewJWT]),
Res; Res;
_ -> _ ->
{error, token_timeout} {error, token_timeout}
@ -124,7 +124,7 @@ do_verify(Token)->
do_destroy(Token) -> do_destroy(Token) ->
Fun = fun mnesia:delete/1, Fun = fun mnesia:delete/1,
{atomic, ok} = ekka_mnesia:transaction(?DASHBOARD_SHARD, Fun, [{?TAB, Token}]), {atomic, ok} = mria:transaction(?DASHBOARD_SHARD, Fun, [{?TAB, Token}]),
ok. ok.
do_destroy_by_username(Username) -> do_destroy_by_username(Username) ->

View File

@ -102,7 +102,7 @@ t_rest_api(_Config) ->
ok. ok.
t_cli(_Config) -> t_cli(_Config) ->
[ekka_mnesia:dirty_delete(mqtt_admin, Admin) || Admin <- mnesia:dirty_all_keys(mqtt_admin)], [mria:dirty_delete(mqtt_admin, Admin) || Admin <- mnesia:dirty_all_keys(mqtt_admin)],
emqx_dashboard_cli:admins(["add", "username", "password"]), emqx_dashboard_cli:admins(["add", "username", "password"]),
[{mqtt_admin, <<"username">>, <<Salt:4/binary, Hash/binary>>, _}] = [{mqtt_admin, <<"username">>, <<Salt:4/binary, Hash/binary>>, _}] =
emqx_dashboard_admin:lookup_user(<<"username">>), emqx_dashboard_admin:lookup_user(<<"username">>),

View File

@ -65,7 +65,7 @@ register_channel(Type, ClientId) when is_binary(ClientId) ->
register_channel(Type, {ClientId, self()}); register_channel(Type, {ClientId, self()});
register_channel(Type, {ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) -> register_channel(Type, {ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) ->
ekka_mnesia:dirty_write(tabname(Type), record(ClientId, ChanPid)). mria:dirty_write(tabname(Type), record(ClientId, ChanPid)).
%% @doc Unregister a global channel. %% @doc Unregister a global channel.
-spec unregister_channel(atom(), binary() | {binary(), pid()}) -> ok. -spec unregister_channel(atom(), binary() | {binary(), pid()}) -> ok.
@ -73,7 +73,7 @@ unregister_channel(Type, ClientId) when is_binary(ClientId) ->
unregister_channel(Type, {ClientId, self()}); unregister_channel(Type, {ClientId, self()});
unregister_channel(Type, {ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) -> unregister_channel(Type, {ClientId, ChanPid}) when is_binary(ClientId), is_pid(ChanPid) ->
ekka_mnesia:dirty_delete_object(tabname(Type), record(ClientId, ChanPid)). mria:dirty_delete_object(tabname(Type), record(ClientId, ChanPid)).
%% @doc Lookup the global channels. %% @doc Lookup the global channels.
-spec lookup_channels(atom(), binary()) -> list(pid()). -spec lookup_channels(atom(), binary()) -> list(pid()).
@ -115,7 +115,7 @@ handle_info({membership, {mnesia, down, Node}}, State = #{type := Type}) ->
global:trans({?LOCK, self()}, global:trans({?LOCK, self()},
fun() -> fun() ->
%% FIXME: The shard name should be fixed later %% FIXME: The shard name should be fixed later
ekka_mnesia:transaction(?MODULE, fun cleanup_channels/2, [Node, Tab]) mria:transaction(?MODULE, fun cleanup_channels/2, [Node, Tab])
end), end),
{noreply, State}; {noreply, State};

View File

@ -155,14 +155,14 @@ init([InstaId, PredefTopics]) ->
MaxPredefId = lists:foldl( MaxPredefId = lists:foldl(
fun(#{id := TopicId, topic := TopicName0}, AccId) -> fun(#{id := TopicId, topic := TopicName0}, AccId) ->
TopicName = iolist_to_binary(TopicName0), TopicName = iolist_to_binary(TopicName0),
ekka_mnesia:dirty_write(Tab, #emqx_sn_registry{ mria:dirty_write(Tab, #emqx_sn_registry{
key = {predef, TopicId}, key = {predef, TopicId},
value = TopicName} value = TopicName}
), ),
ekka_mnesia:dirty_write(Tab, #emqx_sn_registry{ mria:dirty_write(Tab, #emqx_sn_registry{
key = {predef, TopicName}, key = {predef, TopicName},
value = TopicId} value = TopicId}
), ),
if TopicId > AccId -> TopicId; true -> AccId end if TopicId > AccId -> TopicId; true -> AccId end
end, 0, PredefTopics), end, 0, PredefTopics),
{ok, #state{tabname = Tab, max_predef_topic_id = MaxPredefId}}. {ok, #state{tabname = Tab, max_predef_topic_id = MaxPredefId}}.
@ -190,7 +190,7 @@ handle_call({register, ClientId, TopicName}, _From,
key = {ClientId, TopicId}, key = {ClientId, TopicId},
value = TopicName}, write) value = TopicName}, write)
end, end,
case ekka_mnesia:transaction(?SN_SHARD, Fun) of case mria:transaction(?SN_SHARD, Fun) of
{atomic, ok} -> {atomic, ok} ->
{reply, TopicId, State}; {reply, TopicId, State};
{aborted, Error} -> {aborted, Error} ->
@ -205,7 +205,7 @@ handle_call({unregister, ClientId}, _From, State = #state{tabname = Tab}) ->
{emqx_sn_registry, {ClientId, '_'}, '_'} {emqx_sn_registry, {ClientId, '_'}, '_'}
), ),
lists:foreach(fun(R) -> lists:foreach(fun(R) ->
ekka_mnesia:dirty_delete_object(Tab, R) mria:dirty_delete_object(Tab, R)
end, Registry), end, Registry),
{reply, ok, State}; {reply, ok, State};

View File

@ -280,7 +280,7 @@ do_catch_up_in_one_trans(LatestId, Node) ->
end. end.
transaction(Func, Args) -> transaction(Func, Args) ->
ekka_mnesia:transaction(?EMQX_MACHINE_SHARD, Func, Args). mria:transaction(?EMQX_MACHINE_SHARD, Func, Args).
trans_status() -> trans_status() ->
mnesia:foldl(fun(Rec, Acc) -> mnesia:foldl(fun(Rec, Acc) ->

View File

@ -49,7 +49,7 @@ handle_cast(Msg, State) ->
{noreply, State}. {noreply, State}.
handle_info({timeout, TRef, del_stale_mfa}, State = #{timer := TRef, max_history := MaxHistory}) -> handle_info({timeout, TRef, del_stale_mfa}, State = #{timer := TRef, max_history := MaxHistory}) ->
case ekka_mnesia:transaction(?EMQX_MACHINE_SHARD, fun del_stale_mfa/1, [MaxHistory]) of case mria:transaction(?EMQX_MACHINE_SHARD, fun del_stale_mfa/1, [MaxHistory]) of
{atomic, ok} -> ok; {atomic, ok} -> ok;
Error -> ?LOG(error, "del_stale_cluster_rpc_mfa error:~p", [Error]) Error -> ?LOG(error, "del_stale_cluster_rpc_mfa error:~p", [Error])
end, end,

View File

@ -184,7 +184,7 @@ delete_delayed_message(Id0) ->
{error, not_found}; {error, not_found};
Rows -> Rows ->
Timestamp = hd(Rows), Timestamp = hd(Rows),
ekka_mnesia:dirty_delete(?TAB, {Timestamp, Id}) mria:dirty_delete(?TAB, {Timestamp, Id})
end. end.
update_config(Config) -> update_config(Config) ->
{ok, _} = emqx:update_config([delayed], Config). {ok, _} = emqx:update_config([delayed], Config).
@ -205,7 +205,7 @@ handle_call({set_max_delayed_messages, Max}, _From, State) ->
handle_call({store, DelayedMsg = #delayed_message{key = Key}}, handle_call({store, DelayedMsg = #delayed_message{key = Key}},
_From, State = #{max_delayed_messages := 0}) -> _From, State = #{max_delayed_messages := 0}) ->
ok = ekka_mnesia:dirty_write(?TAB, DelayedMsg), ok = mria:dirty_write(?TAB, DelayedMsg),
emqx_metrics:inc('messages.delayed'), emqx_metrics:inc('messages.delayed'),
{reply, ok, ensure_publish_timer(Key, State)}; {reply, ok, ensure_publish_timer(Key, State)};
@ -216,7 +216,7 @@ handle_call({store, DelayedMsg = #delayed_message{key = Key}},
true -> true ->
{reply, {error, max_delayed_messages_full}, State}; {reply, {error, max_delayed_messages_full}, State};
false -> false ->
ok = ekka_mnesia:dirty_write(?TAB, DelayedMsg), ok = mria:dirty_write(?TAB, DelayedMsg),
emqx_metrics:inc('messages.delayed'), emqx_metrics:inc('messages.delayed'),
{reply, ok, ensure_publish_timer(Key, State)} {reply, ok, ensure_publish_timer(Key, State)}
end; end;
@ -240,7 +240,7 @@ handle_cast(Msg, State) ->
%% Do Publish... %% Do Publish...
handle_info({timeout, TRef, do_publish}, State = #{timer := TRef}) -> handle_info({timeout, TRef, do_publish}, State = #{timer := TRef}) ->
DeletedKeys = do_publish(mnesia:dirty_first(?TAB), os:system_time(seconds)), DeletedKeys = do_publish(mnesia:dirty_first(?TAB), os:system_time(seconds)),
lists:foreach(fun(Key) -> ekka_mnesia:dirty_delete(?TAB, Key) end, DeletedKeys), lists:foreach(fun(Key) -> mria:dirty_delete(?TAB, Key) end, DeletedKeys),
{noreply, ensure_publish_timer(State#{timer := undefined, publish_at := 0})}; {noreply, ensure_publish_timer(State#{timer := undefined, publish_at := 0})};
handle_info(stats, State = #{stats_fun := StatsFun}) -> handle_info(stats, State = #{stats_fun := StatsFun}) ->

View File

@ -140,8 +140,8 @@ init(_Opts) ->
UUID1 = case mnesia:dirty_read(?TELEMETRY, ?UNIQUE_ID) of UUID1 = case mnesia:dirty_read(?TELEMETRY, ?UNIQUE_ID) of
[] -> [] ->
UUID = generate_uuid(), UUID = generate_uuid(),
ekka_mnesia:dirty_write(?TELEMETRY, #telemetry{id = ?UNIQUE_ID, mria:dirty_write(?TELEMETRY, #telemetry{id = ?UNIQUE_ID,
uuid = UUID}), uuid = UUID}),
UUID; UUID;
[#telemetry{uuid = UUID} | _] -> [#telemetry{uuid = UUID} | _] ->
UUID UUID

View File

@ -237,7 +237,7 @@ trim_crlf(Bin) ->
end. end.
trans(Fun, Args) -> trans(Fun, Args) ->
case ekka_mnesia:transaction(?PSK_SHARD, Fun, Args) of case mria:transaction(?PSK_SHARD, Fun, Args) of
{atomic, Res} -> Res; {atomic, Res} -> Res;
{aborted, Reason} -> {error, Reason} {aborted, Reason} -> {error, Reason}
end. end.

View File

@ -73,10 +73,10 @@ store_retained(_, Msg =#message{topic = Topic}) ->
case is_table_full() of case is_table_full() of
false -> false ->
ok = emqx_metrics:inc('messages.retained'), ok = emqx_metrics:inc('messages.retained'),
ekka_mnesia:dirty_write(?TAB, mria:dirty_write(?TAB,
#retained{topic = topic2tokens(Topic), #retained{topic = topic2tokens(Topic),
msg = Msg, msg = Msg,
expiry_time = ExpiryTime}); expiry_time = ExpiryTime});
_ -> _ ->
Tokens = topic2tokens(Topic), Tokens = topic2tokens(Topic),
Fun = fun() -> Fun = fun() ->
@ -94,7 +94,7 @@ store_retained(_, Msg =#message{topic = Topic}) ->
ok ok
end end
end, end,
{atomic, ok} = ekka_mnesia:transaction(?RETAINER_SHARD, Fun), {atomic, ok} = mria:transaction(?RETAINER_SHARD, Fun),
ok ok
end. end.
@ -106,7 +106,7 @@ clear_expired(_) ->
Keys = mnesia:select(?TAB, Ms, write), Keys = mnesia:select(?TAB, Ms, write),
lists:foreach(fun(Key) -> mnesia:delete({?TAB, Key}) end, Keys) lists:foreach(fun(Key) -> mnesia:delete({?TAB, Key}) end, Keys)
end, end,
{atomic, _} = ekka_mnesia:transaction(?RETAINER_SHARD, Fun), {atomic, _} = mria:transaction(?RETAINER_SHARD, Fun),
ok. ok.
delete_message(_, Topic) -> delete_message(_, Topic) ->
@ -117,7 +117,7 @@ delete_message(_, Topic) ->
Fun = fun() -> Fun = fun() ->
mnesia:delete({?TAB, Tokens}) mnesia:delete({?TAB, Tokens})
end, end,
case ekka_mnesia:transaction(?RETAINER_SHARD, Fun) of case mria:transaction(?RETAINER_SHARD, Fun) of
{atomic, Result} -> {atomic, Result} ->
Result; Result;
ok -> ok ->
@ -214,7 +214,7 @@ match_delete_messages(Filter) ->
MsHd = #retained{topic = Cond, msg = '_', expiry_time = '_'}, MsHd = #retained{topic = Cond, msg = '_', expiry_time = '_'},
Ms = [{MsHd, [], ['$_']}], Ms = [{MsHd, [], ['$_']}],
Rs = mnesia:dirty_select(?TAB, Ms), Rs = mnesia:dirty_select(?TAB, Ms),
lists:foreach(fun(R) -> ekka_mnesia:dirty_delete_object(?TAB, R) end, Rs). lists:foreach(fun(R) -> mria:dirty_delete_object(?TAB, R) end, Rs).
%% @private %% @private
condition(Ws) -> condition(Ws) ->

View File

@ -50,7 +50,7 @@
, {jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.5"}}} , {jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.5"}}}
, {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.8.3"}}} , {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.8.3"}}}
, {esockd, {git, "https://github.com/emqx/esockd", {tag, "5.9.0"}}} , {esockd, {git, "https://github.com/emqx/esockd", {tag, "5.9.0"}}}
, {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.10.9"}}} , {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.11.0"}}}
, {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.5.1"}}} , {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.5.1"}}}
, {minirest, {git, "https://github.com/emqx/minirest", {tag, "1.2.5"}}} , {minirest, {git, "https://github.com/emqx/minirest", {tag, "1.2.5"}}}
, {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.1"}}} , {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.1"}}}