From 4fa06fcd632d4d38ef637e3687f2297d0194bcb6 Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Thu, 18 Aug 2022 12:19:34 +0200 Subject: [PATCH] refactor(exclusive_sub): Export transaction --- apps/emqx/src/emqx_exclusive_subscription.erl | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/emqx/src/emqx_exclusive_subscription.erl b/apps/emqx/src/emqx_exclusive_subscription.erl index f419740d3..7a2d65472 100644 --- a/apps/emqx/src/emqx_exclusive_subscription.erl +++ b/apps/emqx/src/emqx_exclusive_subscription.erl @@ -35,6 +35,11 @@ unsubscribe/2 ]). +%% Internal exports (RPC) +-export([ + try_subscribe/2 +]). + -record(exclusive_subscription, { topic :: emqx_types:topic(), clientid :: emqx_types:clientid() @@ -80,10 +85,7 @@ on_delete_module() -> -spec check_subscribe(emqx_types:clientinfo(), emqx_types:topic()) -> allow | deny. check_subscribe(#{clientid := ClientId}, Topic) -> - Fun = fun() -> - try_subscribe(ClientId, Topic) - end, - case mria:transaction(?EXCLUSIVE_SHARD, Fun) of + case mria:transaction(?EXCLUSIVE_SHARD, fun ?MODULE:try_subscribe/2, [ClientId, Topic]) of {atomic, Res} -> Res; {aborted, Reason} -> @@ -94,7 +96,7 @@ check_subscribe(#{clientid := ClientId}, Topic) -> end. unsubscribe(Topic, #{is_exclusive := true}) -> - _ = mria:transaction(?EXCLUSIVE_SHARD, fun() -> mnesia:delete({?TAB, Topic}) end), + _ = mria:transaction(?EXCLUSIVE_SHARD, fun mnesia:delete/1, [{?TAB, Topic}]), ok; unsubscribe(_Topic, _SubOpts) -> ok.