Merge pull request #5907 from k32/mechanical-appup-update
chore(appup): Update appup scripts
This commit is contained in:
commit
4b098ce3af
|
@ -1,30 +1,22 @@
|
||||||
%% -*-: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
|
|
||||||
{VSN,
|
{VSN,
|
||||||
[
|
[{"4.3.2",
|
||||||
{"4.3.2", [
|
[{load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_acl_mnesia_api, brutal_purge,soft_purge,[]},
|
{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}
|
{"4.3.1",
|
||||||
]},
|
[{load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]},
|
||||||
{"4.3.1", [
|
{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}
|
{"4.3.0",
|
||||||
]},
|
[{load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]},
|
||||||
{"4.3.0", [
|
{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}
|
{<<".*">>,[]}],
|
||||||
]},
|
[{"4.3.2",
|
||||||
{<<".*">>, []}
|
[{load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]},
|
||||||
],
|
{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]},
|
||||||
[
|
{"4.3.1",
|
||||||
{"4.3.2", [
|
[{load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_acl_mnesia_api, brutal_purge,soft_purge,[]},
|
{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}
|
{"4.3.0",
|
||||||
]},
|
[{load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]},
|
||||||
{"4.3.1", [
|
{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}
|
{<<".*">>,[]}]}.
|
||||||
]},
|
|
||||||
{"4.3.0", [
|
|
||||||
{load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}
|
|
||||||
]},
|
|
||||||
{<<".*">>, []}
|
|
||||||
]
|
|
||||||
}.
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
{VSN,
|
{VSN,
|
||||||
[ {<<"4.3.[0-6]">>,
|
[ {<<"4.3.[0-9]">>,
|
||||||
[ {apply,{minirest,stop_http,['http:management']}},
|
[ {apply,{minirest,stop_http,['http:management']}},
|
||||||
{apply,{minirest,stop_http,['https:management']}},
|
{apply,{minirest,stop_http,['https:management']}},
|
||||||
{restart_application, emqx_management}
|
{restart_application, emqx_management}
|
||||||
]},
|
]},
|
||||||
{<<".*">>, []}
|
{<<".*">>, []}
|
||||||
],
|
],
|
||||||
[ {<<"4.3.[0-6]">>,
|
[ {<<"4.3.[0-9]">>,
|
||||||
[ {apply,{minirest,stop_http,['http:management']}},
|
[ {apply,{minirest,stop_http,['http:management']}},
|
||||||
{apply,{minirest,stop_http,['https:management']}},
|
{apply,{minirest,stop_http,['https:management']}},
|
||||||
{restart_application, emqx_management}
|
{restart_application, emqx_management}
|
||||||
|
|
|
@ -1,28 +1,20 @@
|
||||||
%% -*-: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
|
|
||||||
{VSN,
|
{VSN,
|
||||||
[
|
[{"4.3.5",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]},
|
||||||
{<<"4.3.[0-2]">>, [
|
{<<"4.3.[0-2]">>,
|
||||||
{apply, {application, stop,[emqx_web_hook]}},
|
[{apply,{application,stop,[emqx_web_hook]}},
|
||||||
{load_module, emqx_web_hook_app, brutal_purge, soft_purge, []},
|
{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module, emqx_web_hook, brutal_purge, soft_purge, []},
|
{load_module,emqx_web_hook,brutal_purge,soft_purge,[]},
|
||||||
{load_module, emqx_web_hook_actions, brutal_purge, soft_purge, []}
|
{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]},
|
||||||
]},
|
{<<"4.3.[3-4]">>,
|
||||||
{<<"4.3.[3-5]">>, [
|
[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module, emqx_web_hook_actions, brutal_purge, soft_purge, []}
|
{<<".*">>,[]}],
|
||||||
]},
|
[{"4.3.5",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>, []}
|
{<<"4.3.[0-2]">>,
|
||||||
],
|
[{apply,{application,stop,[emqx_web_hook]}},
|
||||||
[
|
{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]},
|
||||||
{<<"4.3.[0-2]">>, [
|
{load_module,emqx_web_hook,brutal_purge,soft_purge,[]},
|
||||||
{apply, {application, stop, [emqx_web_hook]}},
|
{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module, emqx_web_hook_app, brutal_purge, soft_purge, []},
|
{<<"4.3.[3-4]">>,
|
||||||
{load_module, emqx_web_hook, brutal_purge, soft_purge, []},
|
[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]},
|
||||||
{load_module, emqx_web_hook_actions, brutal_purge, soft_purge, []}
|
{<<".*">>,[]}]}.
|
||||||
]},
|
|
||||||
{<<"4.3.[3-5]">>, [
|
|
||||||
{load_module, emqx_web_hook_actions, brutal_purge, soft_purge, []}
|
|
||||||
]},
|
|
||||||
{<<".*">>, []}
|
|
||||||
]
|
|
||||||
}.
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
{VSN,
|
{VSN,
|
||||||
[ {<<"4.3.[0-4]">>,
|
[ {<<"4.3.[0-9]">>,
|
||||||
%% load all plugins
|
%% load all plugins
|
||||||
%% NOTE: this depends on the fact that emqx_dashboard is always
|
%% NOTE: this depends on the fact that emqx_dashboard is always
|
||||||
%% the last application gets upgraded
|
%% the last application gets upgraded
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
]},
|
]},
|
||||||
{<<".*">>, []}
|
{<<".*">>, []}
|
||||||
],
|
],
|
||||||
[ {<<"4.3.[0-4]">>,
|
[ {<<"4.3.[0-9]">>,
|
||||||
[ {apply, {emqx_rule_engine, load_providers, []}}
|
[ {apply, {emqx_rule_engine, load_providers, []}}
|
||||||
, {restart_application, emqx_dashboard}
|
, {restart_application, emqx_dashboard}
|
||||||
, {apply, {emqx_plugins, load, []}}
|
, {apply, {emqx_plugins, load, []}}
|
||||||
|
|
|
@ -49,6 +49,13 @@ default_options() ->
|
||||||
, src_dirs => "{src,apps,lib-*}/**/"
|
, src_dirs => "{src,apps,lib-*}/**/"
|
||||||
}.
|
}.
|
||||||
|
|
||||||
|
%% App-specific actions that should be added unconditionally to any update/downgrade:
|
||||||
|
app_specific_actions(_) ->
|
||||||
|
[].
|
||||||
|
|
||||||
|
ignored_apps() ->
|
||||||
|
[emqx_dashboard, emqx_management].
|
||||||
|
|
||||||
main(Args) ->
|
main(Args) ->
|
||||||
#{current_release := CurrentRelease} = Options = parse_args(Args, default_options()),
|
#{current_release := CurrentRelease} = Options = parse_args(Args, default_options()),
|
||||||
init_globals(Options),
|
init_globals(Options),
|
||||||
|
@ -172,8 +179,8 @@ find_appup_actions(_App, AppIdx, AppIdx) ->
|
||||||
[];
|
[];
|
||||||
find_appup_actions(App, CurrAppIdx, PrevAppIdx = #app{version = PrevVersion}) ->
|
find_appup_actions(App, CurrAppIdx, PrevAppIdx = #app{version = PrevVersion}) ->
|
||||||
{OldUpgrade, OldDowngrade} = find_old_appup_actions(App, PrevVersion),
|
{OldUpgrade, OldDowngrade} = find_old_appup_actions(App, PrevVersion),
|
||||||
Upgrade = merge_update_actions(diff_app(App, CurrAppIdx, PrevAppIdx), OldUpgrade),
|
Upgrade = merge_update_actions(App, diff_app(App, CurrAppIdx, PrevAppIdx), OldUpgrade),
|
||||||
Downgrade = merge_update_actions(diff_app(App, PrevAppIdx, CurrAppIdx), OldDowngrade),
|
Downgrade = merge_update_actions(App, diff_app(App, PrevAppIdx, CurrAppIdx), OldDowngrade),
|
||||||
if OldUpgrade =:= Upgrade andalso OldDowngrade =:= Downgrade ->
|
if OldUpgrade =:= Upgrade andalso OldDowngrade =:= Downgrade ->
|
||||||
%% The appup file has been already updated:
|
%% The appup file has been already updated:
|
||||||
[];
|
[];
|
||||||
|
@ -192,22 +199,24 @@ find_old_appup_actions(App, PrevVersion) ->
|
||||||
end,
|
end,
|
||||||
{ensure_version(PrevVersion, Upgrade0), ensure_version(PrevVersion, Downgrade0)}.
|
{ensure_version(PrevVersion, Upgrade0), ensure_version(PrevVersion, Downgrade0)}.
|
||||||
|
|
||||||
merge_update_actions(Changes, Vsns) ->
|
merge_update_actions(App, Changes, Vsns) ->
|
||||||
lists:map(fun(Ret = {<<".*">>, _}) ->
|
lists:map(fun(Ret = {<<".*">>, _}) ->
|
||||||
Ret;
|
Ret;
|
||||||
({Vsn, Actions}) ->
|
({Vsn, Actions}) ->
|
||||||
{Vsn, do_merge_update_actions(Changes, Actions)}
|
{Vsn, do_merge_update_actions(App, Changes, Actions)}
|
||||||
end,
|
end,
|
||||||
Vsns).
|
Vsns).
|
||||||
|
|
||||||
do_merge_update_actions({New0, Changed0, Deleted0}, OldActions) ->
|
do_merge_update_actions(App, {New0, Changed0, Deleted0}, OldActions) ->
|
||||||
|
AppSpecific = app_specific_actions(App) -- OldActions,
|
||||||
AlreadyHandled = lists:flatten(lists:map(fun process_old_action/1, OldActions)),
|
AlreadyHandled = lists:flatten(lists:map(fun process_old_action/1, OldActions)),
|
||||||
New = New0 -- AlreadyHandled,
|
New = New0 -- AlreadyHandled,
|
||||||
Changed = Changed0 -- AlreadyHandled,
|
Changed = Changed0 -- AlreadyHandled,
|
||||||
Deleted = Deleted0 -- AlreadyHandled,
|
Deleted = Deleted0 -- AlreadyHandled,
|
||||||
[{load_module, M, brutal_purge, soft_purge, []} || M <- Changed ++ New] ++
|
[{load_module, M, brutal_purge, soft_purge, []} || M <- Changed ++ New] ++
|
||||||
OldActions ++
|
OldActions ++
|
||||||
[{delete_module, M} || M <- Deleted].
|
[{delete_module, M} || M <- Deleted] ++
|
||||||
|
AppSpecific.
|
||||||
|
|
||||||
|
|
||||||
%% @doc Process the existing actions to exclude modules that are
|
%% @doc Process the existing actions to exclude modules that are
|
||||||
|
@ -222,12 +231,13 @@ process_old_action(LoadModule) when is_tuple(LoadModule) andalso
|
||||||
process_old_action(_) ->
|
process_old_action(_) ->
|
||||||
[].
|
[].
|
||||||
|
|
||||||
ensure_version(Version, Versions) ->
|
ensure_version(Version, OldInstructions) ->
|
||||||
case lists:keyfind(Version, 1, Versions) of
|
OldVersions = [ensure_string(element(1, I)) || I <- OldInstructions],
|
||||||
|
case lists:member(Version, OldVersions) of
|
||||||
false ->
|
false ->
|
||||||
[{Version, []}|Versions];
|
[{Version, []}|OldInstructions];
|
||||||
_ ->
|
_ ->
|
||||||
Versions
|
OldInstructions
|
||||||
end.
|
end.
|
||||||
|
|
||||||
read_appup(File) ->
|
read_appup(File) ->
|
||||||
|
@ -288,8 +298,9 @@ create_stub(App) ->
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
index_apps(ReleaseDir) ->
|
index_apps(ReleaseDir) ->
|
||||||
maps:from_list([index_app(filename:join(ReleaseDir, AppFile)) ||
|
Apps0 = maps:from_list([index_app(filename:join(ReleaseDir, AppFile)) ||
|
||||||
AppFile <- filelib:wildcard("**/ebin/*.app", ReleaseDir)]).
|
AppFile <- filelib:wildcard("**/ebin/*.app", ReleaseDir)]),
|
||||||
|
maps:without(ignored_apps(), Apps0).
|
||||||
|
|
||||||
index_app(AppFile) ->
|
index_app(AppFile) ->
|
||||||
{ok, [{application, App, Properties}]} = file:consult(AppFile),
|
{ok, [{application, App, Properties}]} = file:consult(AppFile),
|
||||||
|
@ -320,7 +331,10 @@ diff_app(App, #app{version = NewVersion, modules = NewModules}, #app{version = O
|
||||||
NChanges = length(New) + length(Changed) + length(Deleted),
|
NChanges = length(New) + length(Changed) + length(Deleted),
|
||||||
if NewVersion =:= OldVersion andalso NChanges > 0 ->
|
if NewVersion =:= OldVersion andalso NChanges > 0 ->
|
||||||
set_invalid(),
|
set_invalid(),
|
||||||
log("ERROR: Application '~p' contains changes, but its version is not updated", [App]);
|
log("ERROR: Application '~p' contains changes, but its version is not updated~n", [App]);
|
||||||
|
NewVersion > OldVersion ->
|
||||||
|
log("INFO: Application '~p' has been updated: ~p -> ~p~n", [App, OldVersion, NewVersion]),
|
||||||
|
ok;
|
||||||
true ->
|
true ->
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
|
@ -425,3 +439,8 @@ log(Msg) ->
|
||||||
|
|
||||||
log(Msg, Args) ->
|
log(Msg, Args) ->
|
||||||
io:format(standard_error, Msg, Args).
|
io:format(standard_error, Msg, Args).
|
||||||
|
|
||||||
|
ensure_string(Str) when is_binary(Str) ->
|
||||||
|
binary_to_list(Str);
|
||||||
|
ensure_string(Str) when is_list(Str) ->
|
||||||
|
Str.
|
||||||
|
|
|
@ -1,37 +1,36 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
Instructions =
|
{VSN,
|
||||||
{"4.3.10",
|
[{"4.3.9",
|
||||||
[
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
%% app 4.3.9 was released in e4.3.4(enterprise) but not v4.3.9(opensource)
|
|
||||||
{"4.3.9", [
|
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
|
||||||
]},
|
|
||||||
{"4.3.8", [
|
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.7", [
|
{"4.3.8",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.7",
|
||||||
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.6", [
|
{"4.3.6",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.5", [
|
{"4.3.5",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
||||||
|
@ -39,10 +38,10 @@ Instructions =
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.4", [
|
{"4.3.4",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
||||||
|
@ -51,10 +50,10 @@ Instructions =
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.3", [
|
{"4.3.3",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
||||||
|
@ -65,10 +64,10 @@ Instructions =
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.2", [
|
{"4.3.2",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
||||||
|
@ -82,10 +81,10 @@ Instructions =
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.1", [
|
{"4.3.1",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
||||||
|
@ -103,9 +102,11 @@ Instructions =
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.0", [
|
{"4.3.0",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
|
@ -126,43 +127,52 @@ Instructions =
|
||||||
{load_module,emqx_http_lib,brutal_purge,soft_purge,[]},
|
{load_module,emqx_http_lib,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}],
|
{<<".*">>,[]}],
|
||||||
[
|
[{"4.3.9",
|
||||||
{"4.3.9", [
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
|
||||||
]},
|
|
||||||
{"4.3.8", [
|
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.7", [
|
{"4.3.8",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.7",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.6", [
|
{"4.3.6",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.5", [
|
{"4.3.5",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.4", [
|
{"4.3.4",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
|
@ -170,9 +180,11 @@ Instructions =
|
||||||
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.3", [
|
{"4.3.3",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
|
@ -182,9 +194,11 @@ Instructions =
|
||||||
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.2", [
|
{"4.3.2",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
|
@ -197,9 +211,11 @@ Instructions =
|
||||||
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
{load_module,emqx_frame,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.1", [
|
{"4.3.1",
|
||||||
|
[{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
|
@ -216,10 +232,10 @@ Instructions =
|
||||||
{load_module,emqx_http_lib,brutal_purge,soft_purge,[]},
|
{load_module,emqx_http_lib,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_rule,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.0", [
|
{"4.3.0",
|
||||||
{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
||||||
|
@ -240,23 +256,6 @@ Instructions =
|
||||||
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
{load_module,emqx_ctl,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_pqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mqueue,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rpc,brutal_purge,soft_purge,[]}
|
{load_module,emqx_rpc,brutal_purge,soft_purge,[]},
|
||||||
]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}]},
|
{<<".*">>,[]}]}.
|
||||||
|
|
||||||
%% Always reload emqx_app for emqx_app:get_release/0 to return the correct version
|
|
||||||
Mandatory = [{load_module,emqx_app,brutal_purge,soft_purge,[]}],
|
|
||||||
|
|
||||||
Append = fun
|
|
||||||
({<<".*">>, Instrs}) ->
|
|
||||||
{<<".*">>, Instrs};
|
|
||||||
({Vsn, Instrs}) ->
|
|
||||||
{Vsn, Instrs ++ Mandatory}
|
|
||||||
end,
|
|
||||||
|
|
||||||
PostProcess = fun({Vsn, UpList, DownList}) ->
|
|
||||||
{Vsn, [Append(Up) || Up <- UpList],
|
|
||||||
[Append(Dn) || Dn <- DownList]}
|
|
||||||
end,
|
|
||||||
|
|
||||||
PostProcess(Instructions).
|
|
||||||
|
|
Loading…
Reference in New Issue