Merge pull request #10807 from zmstone/0524-delete-license-installer
0524 delete license installer
This commit is contained in:
commit
a0d4120f8c
|
@ -0,0 +1 @@
|
||||||
|
Removed license check debug logs.
|
|
@ -1,6 +1,6 @@
|
||||||
{application, emqx_license, [
|
{application, emqx_license, [
|
||||||
{description, "EMQX License"},
|
{description, "EMQX License"},
|
||||||
{vsn, "5.0.9"},
|
{vsn, "5.0.10"},
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{registered, [emqx_license_sup]},
|
{registered, [emqx_license_sup]},
|
||||||
{applications, [kernel, stdlib, emqx_ctl]},
|
{applications, [kernel, stdlib, emqx_ctl]},
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
-module(emqx_license).
|
-module(emqx_license).
|
||||||
|
|
||||||
-include("emqx_license.hrl").
|
-include("emqx_license.hrl").
|
||||||
|
|
|
@ -117,7 +117,7 @@ handle_cast(_Msg, State) ->
|
||||||
handle_info(check_license, #{license := License} = State) ->
|
handle_info(check_license, #{license := License} = State) ->
|
||||||
#{} = check_license(License),
|
#{} = check_license(License),
|
||||||
NewState = ensure_check_license_timer(State),
|
NewState = ensure_check_license_timer(State),
|
||||||
?tp(debug, emqx_license_checked, #{}),
|
?tp(emqx_license_checked, #{}),
|
||||||
{noreply, NewState};
|
{noreply, NewState};
|
||||||
handle_info(check_expiry_alarm, #{license := License} = State) ->
|
handle_info(check_expiry_alarm, #{license := License} = State) ->
|
||||||
ok = expiry_early_alarm(License),
|
ok = expiry_early_alarm(License),
|
||||||
|
|
|
@ -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(debug, emqx_license_installer_noproc, #{old_pid => OldPid}),
|
|
||||||
State;
|
|
||||||
OldPid ->
|
|
||||||
?tp(debug, emqx_license_installer_nochange, #{old_pid => OldPid}),
|
|
||||||
State;
|
|
||||||
NewPid ->
|
|
||||||
_ = Callback(),
|
|
||||||
?tp(debug, emqx_license_installer_called, #{old_pid => OldPid}),
|
|
||||||
State#{pid => NewPid}
|
|
||||||
end.
|
|
|
@ -76,7 +76,7 @@ handle_cast(_Msg, State) ->
|
||||||
handle_info(update_resources, State) ->
|
handle_info(update_resources, State) ->
|
||||||
true = update_resources(),
|
true = update_resources(),
|
||||||
connection_quota_early_alarm(),
|
connection_quota_early_alarm(),
|
||||||
?tp(debug, emqx_license_resources_updated, #{}),
|
?tp(emqx_license_resources_updated, #{}),
|
||||||
{noreply, ensure_timer(State)}.
|
{noreply, ensure_timer(State)}.
|
||||||
|
|
||||||
terminate(_Reason, _State) ->
|
terminate(_Reason, _State) ->
|
||||||
|
|
|
@ -41,15 +41,6 @@ init([]) ->
|
||||||
shutdown => 5000,
|
shutdown => 5000,
|
||||||
type => worker,
|
type => worker,
|
||||||
modules => [emqx_license_resources]
|
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]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}}.
|
}}.
|
||||||
|
|
|
@ -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 := emqx_license_installer_called},
|
|
||||||
1000
|
|
||||||
)
|
|
||||||
end,
|
|
||||||
fun(Trace) ->
|
|
||||||
?assertMatch([_ | _], ?of_kind(emqx_license_installer_called, 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)).
|
|
Loading…
Reference in New Issue