diff --git a/apps/emqx/i18n/emqx_limiter_i18n.conf b/apps/emqx/i18n/emqx_limiter_i18n.conf index 006a0662e..6fbc923b7 100644 --- a/apps/emqx/i18n/emqx_limiter_i18n.conf +++ b/apps/emqx/i18n/emqx_limiter_i18n.conf @@ -1,16 +1,5 @@ emqx_limiter_schema { - enable { - desc { - en: """Enable""" - zh: """是否开启""" - } - label: { - en: """Enable""" - zh: """是否开启""" - } - } - failure_strategy { desc { en: """The strategy when all the retries failed.""" diff --git a/apps/emqx/src/emqx_limiter/src/emqx_limiter_manager.erl b/apps/emqx/src/emqx_limiter/src/emqx_limiter_manager.erl index 5b9413cb9..89148a12c 100644 --- a/apps/emqx/src/emqx_limiter/src/emqx_limiter_manager.erl +++ b/apps/emqx/src/emqx_limiter/src/emqx_limiter_manager.erl @@ -119,19 +119,9 @@ post_config_update([limiter, Type], _Config, NewConf, _OldConf, _AppEnvs) -> Config = maps:get(Type, NewConf), case emqx_limiter_server:whereis(Type) of undefined -> - case Config of - #{enable := false} -> - ok; - _ -> - start_server(Type) - end; + start_server(Type, Config); _ -> - case Config of - #{enable := false} -> - stop_server(Type); - _ -> - emqx_limiter_server:update_config(Type, Config) - end + emqx_limiter_server:update_config(Type, Config) end. %%-------------------------------------------------------------------- diff --git a/apps/emqx/src/emqx_limiter/src/emqx_limiter_schema.erl b/apps/emqx/src/emqx_limiter/src/emqx_limiter_schema.erl index afb46498a..c050956ec 100644 --- a/apps/emqx/src/emqx_limiter/src/emqx_limiter_schema.erl +++ b/apps/emqx/src/emqx_limiter/src/emqx_limiter_schema.erl @@ -30,8 +30,7 @@ namespace/0, get_bucket_cfg_path/2, desc/1, - types/0, - is_enable/1 + types/0 ]). -define(KILOBYTE, 1024). @@ -89,13 +88,12 @@ fields(limiter) -> {Type, ?HOCON(?R_REF(limiter_opts), #{ desc => ?DESC(Type), - default => #{<<"enable">> => false} + default => #{} })} || Type <- types() ]; fields(limiter_opts) -> [ - {enable, ?HOCON(boolean(), #{desc => ?DESC(enable), default => true})}, {rate, ?HOCON(rate(), #{desc => ?DESC(rate), default => "infinity"})}, {burst, ?HOCON(burst_rate(), #{ @@ -202,10 +200,6 @@ to_rate(Str) -> get_bucket_cfg_path(Type, BucketName) -> [limiter, Type, bucket, BucketName]. --spec is_enable(limiter_type()) -> boolean(). -is_enable(Type) -> - emqx:get_config([limiter, Type, enable], false). - types() -> [bytes_in, message_in, connection, message_routing, batch]. diff --git a/apps/emqx/src/emqx_limiter/src/emqx_limiter_server.erl b/apps/emqx/src/emqx_limiter/src/emqx_limiter_server.erl index 43211018c..6a89ecab5 100644 --- a/apps/emqx/src/emqx_limiter/src/emqx_limiter_server.erl +++ b/apps/emqx/src/emqx_limiter/src/emqx_limiter_server.erl @@ -113,13 +113,10 @@ connect(_Type, undefined) -> {ok, emqx_htb_limiter:make_infinity_limiter()}; connect(Type, BucketName) when is_atom(BucketName) -> - case check_enable_and_get_bucket_cfg(Type, BucketName) of + case get_bucket_cfg(Type, BucketName) of undefined -> ?SLOG(error, #{msg => "bucket_config_not_found", type => Type, bucket => BucketName}), {error, config_not_found}; - limiter_not_started -> - ?SLOG(error, #{msg => "limiter_not_started", type => Type, bucket => BucketName}), - {error, limiter_not_started}; #{ rate := AggrRate, capacity := AggrSize, @@ -478,7 +475,7 @@ init_tree(Type, #{bucket := Buckets} = Cfg) -> State2 = State#{ root := Root, - counter := counters:new(CounterNum, [write_concurrency]) + counter := counters:new(CounterNum, [atomics]) }, lists:foldl(fun(F, Acc) -> F(Acc) end, State2, DelayBuckets). @@ -605,13 +602,8 @@ call(Type, Msg) -> gen_server:call(Pid, Msg) end. --spec check_enable_and_get_bucket_cfg(limiter_type(), bucket_name()) -> +-spec get_bucket_cfg(limiter_type(), bucket_name()) -> undefined | limiter_not_started | hocons:config(). -check_enable_and_get_bucket_cfg(Type, Bucket) -> - case emqx_limiter_schema:is_enable(Type) of - false -> - limiter_not_started; - _ -> - Path = emqx_limiter_schema:get_bucket_cfg_path(Type, Bucket), - emqx:get_config(Path, undefined) - end. +get_bucket_cfg(Type, Bucket) -> + Path = emqx_limiter_schema:get_bucket_cfg_path(Type, Bucket), + emqx:get_config(Path, undefined). diff --git a/apps/emqx/src/emqx_limiter/src/emqx_limiter_server_sup.erl b/apps/emqx/src/emqx_limiter/src/emqx_limiter_server_sup.erl index 2f0fa4391..d75bf1082 100644 --- a/apps/emqx/src/emqx_limiter/src/emqx_limiter_server_sup.erl +++ b/apps/emqx/src/emqx_limiter/src/emqx_limiter_server_sup.erl @@ -101,14 +101,4 @@ make_child(Type, Cfg) -> }. childs() -> - Conf = emqx:get_config([limiter]), - lists:foldl( - fun - ({Type, #{enable := true}}, Acc) -> - [make_child(Type) | Acc]; - (_, Acc) -> - Acc - end, - [], - maps:to_list(Conf) - ). + [make_child(Type) || Type <- emqx_limiter_schema:types()].