From 492a5912983236eb0107c9d666c54c4f6418e334 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 24 May 2023 10:53:16 +0200 Subject: [PATCH 1/4] refactor: do not emit debug logs on periodic license checks --- lib-ee/emqx_license/src/emqx_license.erl | 1 + lib-ee/emqx_license/src/emqx_license_checker.erl | 2 +- lib-ee/emqx_license/src/emqx_license_installer.erl | 6 +++--- lib-ee/emqx_license/src/emqx_license_resources.erl | 2 +- lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib-ee/emqx_license/src/emqx_license.erl b/lib-ee/emqx_license/src/emqx_license.erl index ef285b937..3e29dcf25 100644 --- a/lib-ee/emqx_license/src/emqx_license.erl +++ b/lib-ee/emqx_license/src/emqx_license.erl @@ -1,6 +1,7 @@ %%-------------------------------------------------------------------- %% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved. %%-------------------------------------------------------------------- + -module(emqx_license). -include("emqx_license.hrl"). diff --git a/lib-ee/emqx_license/src/emqx_license_checker.erl b/lib-ee/emqx_license/src/emqx_license_checker.erl index 2ebb96004..da777ff84 100644 --- a/lib-ee/emqx_license/src/emqx_license_checker.erl +++ b/lib-ee/emqx_license/src/emqx_license_checker.erl @@ -117,7 +117,7 @@ handle_cast(_Msg, State) -> handle_info(check_license, #{license := License} = State) -> #{} = check_license(License), NewState = ensure_check_license_timer(State), - ?tp(debug, emqx_license_checked, #{}), + ?tp(emqx_license_checked, #{}), {noreply, NewState}; handle_info(check_expiry_alarm, #{license := License} = State) -> ok = expiry_early_alarm(License), diff --git a/lib-ee/emqx_license/src/emqx_license_installer.erl b/lib-ee/emqx_license/src/emqx_license_installer.erl index 58ee6ebcc..61076df4a 100644 --- a/lib-ee/emqx_license/src/emqx_license_installer.erl +++ b/lib-ee/emqx_license/src/emqx_license_installer.erl @@ -74,13 +74,13 @@ ensure_timer(#{interval := Interval} = State) -> check_pid(#{name := Name, pid := OldPid, callback := Callback} = State) -> case whereis(Name) of undefined -> - ?tp(debug, emqx_license_installer_noproc, #{old_pid => OldPid}), + ?tp(emqx_license_installer_noproc, #{old_pid => OldPid}), State; OldPid -> - ?tp(debug, emqx_license_installer_nochange, #{old_pid => OldPid}), + ?tp(emqx_license_installer_nochange, #{old_pid => OldPid}), State; NewPid -> _ = Callback(), - ?tp(debug, emqx_license_installer_called, #{old_pid => OldPid}), + ?tp(info, license_reloaded_after_emqx_app_restart, #{old_pid => OldPid}), State#{pid => NewPid} end. diff --git a/lib-ee/emqx_license/src/emqx_license_resources.erl b/lib-ee/emqx_license/src/emqx_license_resources.erl index 2cc62b8a3..9a63e5e06 100644 --- a/lib-ee/emqx_license/src/emqx_license_resources.erl +++ b/lib-ee/emqx_license/src/emqx_license_resources.erl @@ -76,7 +76,7 @@ handle_cast(_Msg, State) -> handle_info(update_resources, State) -> true = update_resources(), connection_quota_early_alarm(), - ?tp(debug, emqx_license_resources_updated, #{}), + ?tp(emqx_license_resources_updated, #{}), {noreply, ensure_timer(State)}. terminate(_Reason, _State) -> diff --git a/lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl b/lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl index 5d5e27489..21de8b357 100644 --- a/lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl +++ b/lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl @@ -74,12 +74,12 @@ t_update(_Config) -> Pid1 = spawn_link(fun() -> timer:sleep(100) end), register(installer_test, Pid1) end, - #{?snk_kind := emqx_license_installer_called}, + #{?snk_kind := license_reloaded_after_emqx_app_restart}, 1000 ) end, fun(Trace) -> - ?assertMatch([_ | _], ?of_kind(emqx_license_installer_called, Trace)) + ?assertMatch([_ | _], ?of_kind(license_reloaded_after_emqx_app_restart, Trace)) end ). From 798fa8c2c2d6b998d31081f02cf3e8ef2fa3ca0b Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 24 May 2023 10:55:16 +0200 Subject: [PATCH 2/4] refactor: delete module emqx_license_installer after the previous refactoring, emqx_license app is now restarted after join/rejoin the cluster, so there is no longer a need for the installer process which monitors the 'emqx' name registration changes and then issue license reloading and hook re-adding etc. --- .../src/emqx_license_installer.erl | 86 ------------------ lib-ee/emqx_license/src/emqx_license_sup.erl | 9 -- .../test/emqx_license_installer_SUITE.erl | 89 ------------------- 3 files changed, 184 deletions(-) delete mode 100644 lib-ee/emqx_license/src/emqx_license_installer.erl delete mode 100644 lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl diff --git a/lib-ee/emqx_license/src/emqx_license_installer.erl b/lib-ee/emqx_license/src/emqx_license_installer.erl deleted file mode 100644 index 61076df4a..000000000 --- a/lib-ee/emqx_license/src/emqx_license_installer.erl +++ /dev/null @@ -1,86 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved. -%%-------------------------------------------------------------------- --module(emqx_license_installer). - --include_lib("snabbkaffe/include/snabbkaffe.hrl"). - --behaviour(gen_server). - --export([ - start_link/1, - start_link/4 -]). - -%% gen_server callbacks --export([ - init/1, - handle_call/3, - handle_cast/2, - handle_info/2 -]). - --define(NAME, emqx). --define(INTERVAL, 5000). - -%%------------------------------------------------------------------------------ -%% API -%%------------------------------------------------------------------------------ - -start_link(Callback) -> - start_link(?NAME, ?MODULE, ?INTERVAL, Callback). - -start_link(Name, ServerName, Interval, Callback) -> - gen_server:start_link({local, ServerName}, ?MODULE, [Name, Interval, Callback], []). - -%%------------------------------------------------------------------------------ -%% gen_server callbacks -%%------------------------------------------------------------------------------ - -init([Name, Interval, Callback]) -> - Pid = whereis(Name), - State = #{ - interval => Interval, - name => Name, - pid => Pid, - callback => Callback - }, - {ok, ensure_timer(State)}. - -handle_call(_Req, _From, State) -> - {reply, unknown, State}. - -handle_cast(_Msg, State) -> - {noreply, State}. - -handle_info({timeout, Timer, check_pid}, #{timer := Timer} = State) -> - NewState = check_pid(State), - {noreply, ensure_timer(NewState)}; -handle_info(_Msg, State) -> - {noreply, State}. - -%%------------------------------------------------------------------------------ -%% Private functions -%%------------------------------------------------------------------------------ - -ensure_timer(#{interval := Interval} = State) -> - _ = - case State of - #{timer := Timer} -> erlang:cancel_timer(Timer); - _ -> ok - end, - State#{timer => erlang:start_timer(Interval, self(), check_pid)}. - -check_pid(#{name := Name, pid := OldPid, callback := Callback} = State) -> - case whereis(Name) of - undefined -> - ?tp(emqx_license_installer_noproc, #{old_pid => OldPid}), - State; - OldPid -> - ?tp(emqx_license_installer_nochange, #{old_pid => OldPid}), - State; - NewPid -> - _ = Callback(), - ?tp(info, license_reloaded_after_emqx_app_restart, #{old_pid => OldPid}), - State#{pid => NewPid} - end. diff --git a/lib-ee/emqx_license/src/emqx_license_sup.erl b/lib-ee/emqx_license/src/emqx_license_sup.erl index 6b8f73953..304fac313 100644 --- a/lib-ee/emqx_license/src/emqx_license_sup.erl +++ b/lib-ee/emqx_license/src/emqx_license_sup.erl @@ -41,15 +41,6 @@ init([]) -> shutdown => 5000, type => worker, modules => [emqx_license_resources] - }, - - #{ - id => license_installer, - start => {emqx_license_installer, start_link, [fun emqx_license:load/0]}, - restart => permanent, - shutdown => 5000, - type => worker, - modules => [emqx_license_installer] } ] }}. diff --git a/lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl b/lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl deleted file mode 100644 index 21de8b357..000000000 --- a/lib-ee/emqx_license/test/emqx_license_installer_SUITE.erl +++ /dev/null @@ -1,89 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved. -%%-------------------------------------------------------------------- - --module(emqx_license_installer_SUITE). - --compile(nowarn_export_all). --compile(export_all). - --include_lib("eunit/include/eunit.hrl"). --include_lib("common_test/include/ct.hrl"). --include_lib("snabbkaffe/include/snabbkaffe.hrl"). - -all() -> - emqx_common_test_helpers:all(?MODULE). - -init_per_suite(Config) -> - _ = application:load(emqx_conf), - emqx_common_test_helpers:start_apps([emqx_license], fun set_special_configs/1), - Config. - -end_per_suite(_) -> - emqx_common_test_helpers:stop_apps([emqx_license]), - ok. - -init_per_testcase(_Case, Config) -> - {ok, _} = emqx_cluster_rpc:start_link(node(), emqx_cluster_rpc, 1000), - Config. - -end_per_testcase(_Case, _Config) -> - ok. - -set_special_configs(emqx_license) -> - Config = #{key => emqx_license_test_lib:default_license()}, - emqx_config:put([license], Config); -set_special_configs(_) -> - ok. - -%%------------------------------------------------------------------------------ -%% Tests -%%------------------------------------------------------------------------------ - -t_update(_Config) -> - ?check_trace( - begin - ?wait_async_action( - begin - Pid0 = spawn_link(fun() -> - receive - exit -> ok - end - end), - register(installer_test, Pid0), - - {ok, _} = emqx_license_installer:start_link( - installer_test, - ?MODULE, - 10, - fun() -> ok end - ), - - {ok, _} = ?block_until( - #{?snk_kind := emqx_license_installer_nochange}, - 100 - ), - - Pid0 ! exit, - - {ok, _} = ?block_until( - #{?snk_kind := emqx_license_installer_noproc}, - 100 - ), - - Pid1 = spawn_link(fun() -> timer:sleep(100) end), - register(installer_test, Pid1) - end, - #{?snk_kind := license_reloaded_after_emqx_app_restart}, - 1000 - ) - end, - fun(Trace) -> - ?assertMatch([_ | _], ?of_kind(license_reloaded_after_emqx_app_restart, Trace)) - end - ). - -t_unknown_calls(_Config) -> - ok = gen_server:cast(emqx_license_installer, some_cast), - some_msg = erlang:send(emqx_license_installer, some_msg), - ?assertEqual(unknown, gen_server:call(emqx_license_installer, some_request)). From ae2398defe62fc622f17a3d76e6e4b81a136ec5b Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 24 May 2023 15:00:53 +0200 Subject: [PATCH 3/4] docs: add changelogs --- changes/ee/fix-10807.en.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/ee/fix-10807.en.md diff --git a/changes/ee/fix-10807.en.md b/changes/ee/fix-10807.en.md new file mode 100644 index 000000000..8cd5da0c8 --- /dev/null +++ b/changes/ee/fix-10807.en.md @@ -0,0 +1 @@ +Removed license check debug logs. From adf71b905ee732e208c9c6c39f4f985425e226b2 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 24 May 2023 15:10:15 +0200 Subject: [PATCH 4/4] chore: bump emqx_license app vsn --- lib-ee/emqx_license/src/emqx_license.app.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib-ee/emqx_license/src/emqx_license.app.src b/lib-ee/emqx_license/src/emqx_license.app.src index fcdcbc05b..354385faf 100644 --- a/lib-ee/emqx_license/src/emqx_license.app.src +++ b/lib-ee/emqx_license/src/emqx_license.app.src @@ -1,6 +1,6 @@ {application, emqx_license, [ {description, "EMQX License"}, - {vsn, "5.0.9"}, + {vsn, "5.0.10"}, {modules, []}, {registered, [emqx_license_sup]}, {applications, [kernel, stdlib, emqx_ctl]},