fix(limiter): a bucket with an infinity rate shouldn't be added to limiter server
This commit is contained in:
parent
ba72695f04
commit
50e7de9db2
|
@ -36,6 +36,7 @@
|
||||||
calc_capacity/1,
|
calc_capacity/1,
|
||||||
extract_with_type/2,
|
extract_with_type/2,
|
||||||
default_client_config/0,
|
default_client_config/0,
|
||||||
|
default_bucket_config/0,
|
||||||
short_paths_fields/1,
|
short_paths_fields/1,
|
||||||
get_listener_opts/1,
|
get_listener_opts/1,
|
||||||
get_node_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.
|
-spec add_bucket(limiter_id(), limiter_type(), hocons:config() | undefined) -> ok.
|
||||||
add_bucket(_Id, _Type, undefined) ->
|
add_bucket(_Id, _Type, undefined) ->
|
||||||
ok;
|
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) ->
|
add_bucket(Id, Type, Cfg) ->
|
||||||
?CALL(Type, {add_bucket, Id, Cfg}).
|
?CALL(Type, {add_bucket, Id, Cfg}).
|
||||||
|
|
||||||
|
@ -507,8 +510,6 @@ make_root(#{rate := Rate, burst := Burst}) ->
|
||||||
correction => 0
|
correction => 0
|
||||||
}.
|
}.
|
||||||
|
|
||||||
do_add_bucket(_Id, #{rate := infinity}, #{root := #{rate := infinity}} = State) ->
|
|
||||||
State;
|
|
||||||
do_add_bucket(Id, #{rate := Rate} = Cfg, #{buckets := Buckets} = State) ->
|
do_add_bucket(Id, #{rate := Rate} = Cfg, #{buckets := Buckets} = State) ->
|
||||||
case maps:get(Id, Buckets, undefined) of
|
case maps:get(Id, Buckets, undefined) of
|
||||||
undefined ->
|
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
|
%% Test Cases Create Instance
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue