Merge pull request #10711 from lafirest/fix/fix_infinity_bucket
fix(limiter): a bucket with an infinity rate shouldn't be added to limiter server
This commit is contained in:
commit
0dd3325d70
|
@ -3,7 +3,7 @@
|
|||
{id, "emqx"},
|
||||
{description, "EMQX Core"},
|
||||
% strict semver, bump manually!
|
||||
{vsn, "5.0.25"},
|
||||
{vsn, "5.0.26"},
|
||||
{modules, []},
|
||||
{registered, []},
|
||||
{applications, [
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
calc_capacity/1,
|
||||
extract_with_type/2,
|
||||
default_client_config/0,
|
||||
default_bucket_config/0,
|
||||
short_paths_fields/1,
|
||||
get_listener_opts/1,
|
||||
get_node_opts/1,
|
||||
|
|
|
@ -131,6 +131,9 @@ connect(Id, Type, Cfg) ->
|
|||
-spec add_bucket(limiter_id(), limiter_type(), hocons:config() | undefined) -> ok.
|
||||
add_bucket(_Id, _Type, undefined) ->
|
||||
ok;
|
||||
%% a bucket with an infinity rate shouldn't be added to this server, because it is always full
|
||||
add_bucket(_Id, _Type, #{rate := infinity}) ->
|
||||
ok;
|
||||
add_bucket(Id, Type, Cfg) ->
|
||||
?CALL(Type, {add_bucket, Id, Cfg}).
|
||||
|
||||
|
@ -507,8 +510,6 @@ make_root(#{rate := Rate, burst := Burst}) ->
|
|||
correction => 0
|
||||
}.
|
||||
|
||||
do_add_bucket(_Id, #{rate := infinity}, #{root := #{rate := infinity}} = State) ->
|
||||
State;
|
||||
do_add_bucket(Id, #{rate := Rate} = Cfg, #{buckets := Buckets} = State) ->
|
||||
case maps:get(Id, Buckets, undefined) of
|
||||
undefined ->
|
||||
|
|
|
@ -617,6 +617,24 @@ t_extract_with_type(_) ->
|
|||
)
|
||||
).
|
||||
|
||||
t_add_bucket(_) ->
|
||||
Checker = fun(Size) ->
|
||||
#{buckets := Buckets} = sys:get_state(emqx_limiter_server:whereis(bytes)),
|
||||
?assertEqual(Size, maps:size(Buckets), Buckets)
|
||||
end,
|
||||
DefBucket = emqx_limiter_schema:default_bucket_config(),
|
||||
?assertEqual(ok, emqx_limiter_server:add_bucket(?FUNCTION_NAME, bytes, undefined)),
|
||||
Checker(0),
|
||||
?assertEqual(ok, emqx_limiter_server:add_bucket(?FUNCTION_NAME, bytes, DefBucket)),
|
||||
Checker(0),
|
||||
?assertEqual(
|
||||
ok, emqx_limiter_server:add_bucket(?FUNCTION_NAME, bytes, DefBucket#{rate := 100})
|
||||
),
|
||||
Checker(1),
|
||||
?assertEqual(ok, emqx_limiter_server:del_bucket(?FUNCTION_NAME, bytes)),
|
||||
Checker(0),
|
||||
ok.
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% Test Cases Create Instance
|
||||
%%--------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue