From 3e69124ca085a655964b6682b165e9d3706c5247 Mon Sep 17 00:00:00 2001 From: lafirest Date: Wed, 12 Jan 2022 15:46:14 +0800 Subject: [PATCH 1/2] feat(emqx_limiter): add support for update overall limiter --- src/emqx.appup.src | 3 +-- src/emqx_limiter.erl | 13 +++++++++++++ src/emqx_zone.erl | 6 ------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 30089180f..6ac956ab3 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -132,8 +132,7 @@ {<<"4.2.9">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, {load_module, emqx_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_zone, brutal_purge, soft_purge, []} + {load_module, emqx_ws_connection, brutal_purge, soft_purge, []} ]}, {<<".*">>, []} ], diff --git a/src/emqx_limiter.erl b/src/emqx_limiter.erl index 447e04fea..8acd50d32 100644 --- a/src/emqx_limiter.erl +++ b/src/emqx_limiter.erl @@ -23,6 +23,7 @@ , init/4 %% XXX: Compatible with before 4.2 version , info/1 , check/2 + , update_overall_limiter/4 ]). -record(limiter, { @@ -152,3 +153,15 @@ is_message_limiter(conn_messages_in) -> true; is_message_limiter(conn_messages_routing) -> true; is_message_limiter(overall_messages_routing) -> true; is_message_limiter(_) -> false. + +update_overall_limiter(Zone, Name, Capacity, Interval) -> + case is_overall_limiter(Name) of + false -> false; + _ -> + try + esockd_limiter:update({Zone, Name}, Capacity, Interval), + true + catch _:_:_ -> + false + end + end. diff --git a/src/emqx_zone.erl b/src/emqx_zone.erl index 760fbb2cb..6cec6c1ee 100644 --- a/src/emqx_zone.erl +++ b/src/emqx_zone.erl @@ -243,7 +243,6 @@ get_env(Zone, Key, Def) -> -spec(set_env(zone(), atom(), term()) -> ok). set_env(Zone, Key, Val) -> - on_conf_update(Key, Val, Zone), persistent_term:put(?KEY(Zone, Key), Val). -spec(unset_env(zone(), atom()) -> boolean()). @@ -297,8 +296,3 @@ do_reload() -> [persistent_term:put(?KEY(Zone, Key), Val) || {Zone, Opts} <- emqx:get_env(zones, []), {Key, Val} <- Opts]. -on_conf_update(overall_messages_routing, {Capacity, Interval}, Zone) -> - esockd_limiter:update({Zone, overall_messages_routing}, Capacity, Interval), - ok; -on_conf_update(_, _, _) -> - ok. From 9c84bb5e87bb3dd2a45f20bec3d63c7a584061f1 Mon Sep 17 00:00:00 2001 From: lafirest Date: Wed, 12 Jan 2022 15:54:17 +0800 Subject: [PATCH 2/2] chore: update the emqx appup --- src/emqx.appup.src | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 6ac956ab3..539ee807f 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -132,7 +132,8 @@ {<<"4.2.9">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, {load_module, emqx_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_ws_connection, brutal_purge, soft_purge, []} + {load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, + {load_module, emqx_limiter, brutal_purge, soft_purge, []} ]}, {<<".*">>, []} ], @@ -268,7 +269,7 @@ {load_module, emqx_frame, brutal_purge, soft_purge, []}, {load_module, emqx_connection, brutal_purge, soft_purge, []}, {load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_zone, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []} ]}, {<<".*">>, []} ]