diff --git a/apps/emqttd/src/emqttd_acl.erl b/apps/emqttd/src/emqttd_acl.erl index 02350e7d4..1184d87ce 100644 --- a/apps/emqttd/src/emqttd_acl.erl +++ b/apps/emqttd/src/emqttd_acl.erl @@ -141,7 +141,7 @@ stop() -> %%% gen_server callbacks. %%%============================================================================= init([AclMods]) -> - ets:new(?ACL_TABLE, [set, protected, named_table]), + ets:new(?ACL_TABLE, [set, protected, named_table, {read_concurrency, true}]), AclMods1 = lists:map( fun({M, Opts}) -> AclMod = aclmod(M), diff --git a/apps/emqttd/src/emqttd_acl_internal.erl b/apps/emqttd/src/emqttd_acl_internal.erl index 593c8368d..106345bb1 100644 --- a/apps/emqttd/src/emqttd_acl_internal.erl +++ b/apps/emqttd/src/emqttd_acl_internal.erl @@ -60,7 +60,7 @@ all_rules() -> %% @doc init internal ACL. -spec init(AclOpts :: list()) -> {ok, State :: any()}. init(AclOpts) -> - ets:new(?ACL_RULE_TABLE, [set, public, named_table]), + ets:new(?ACL_RULE_TABLE, [set, public, named_table, {read_concurrency, true}]), AclFile = proplists:get_value(file, AclOpts), Default = proplists:get_value(nomatch, AclOpts, allow), State = #state{acl_file = AclFile, nomatch = Default},