diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src index d5cb8b49f..abe359eef 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src @@ -1,30 +1,22 @@ -%% -*-: erlang -*- - +%% -*- mode: erlang -*- {VSN, - [ - {"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", [ - {load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]} - ]}, - {"4.3.0", [ - {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", [ - {load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]} - ]}, - {"4.3.0", [ - {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", + [{load_module,emqx_acl_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,[]}, + {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", + [{load_module,emqx_acl_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,[]}, + {load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}]}. diff --git a/apps/emqx_web_hook/src/emqx_web_hook.appup.src b/apps/emqx_web_hook/src/emqx_web_hook.appup.src index db245b2ee..ec716f45c 100644 --- a/apps/emqx_web_hook/src/emqx_web_hook.appup.src +++ b/apps/emqx_web_hook/src/emqx_web_hook.appup.src @@ -1,28 +1,20 @@ -%% -*-: erlang -*- - +%% -*- mode: erlang -*- {VSN, - [ - {<<"4.3.[0-2]">>, [ - {apply, {application, stop,[emqx_web_hook]}}, - {load_module, emqx_web_hook_app, brutal_purge, soft_purge, []}, - {load_module, emqx_web_hook, 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, []} - ]}, - {<<".*">>, []} - ], - [ - {<<"4.3.[0-2]">>, [ - {apply, {application, stop, [emqx_web_hook]}}, - {load_module, emqx_web_hook_app, brutal_purge, soft_purge, []}, - {load_module, emqx_web_hook, 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, []} - ]}, - {<<".*">>, []} - ] -}. + [{"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,[]}, + {load_module,emqx_web_hook,brutal_purge,soft_purge,[]}, + {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {<<"4.3.[3-4]">>, + [{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,[]}, + {load_module,emqx_web_hook,brutal_purge,soft_purge,[]}, + {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {<<"4.3.[3-4]">>, + [{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}]}. diff --git a/scripts/update_appup.escript b/scripts/update_appup.escript index 61e6ae717..653bcf949 100755 --- a/scripts/update_appup.escript +++ b/scripts/update_appup.escript @@ -49,6 +49,13 @@ default_options() -> , 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) -> #{current_release := CurrentRelease} = Options = parse_args(Args, default_options()), init_globals(Options), @@ -172,8 +179,8 @@ find_appup_actions(_App, AppIdx, AppIdx) -> []; find_appup_actions(App, CurrAppIdx, PrevAppIdx = #app{version = PrevVersion}) -> {OldUpgrade, OldDowngrade} = find_old_appup_actions(App, PrevVersion), - Upgrade = merge_update_actions(diff_app(App, CurrAppIdx, PrevAppIdx), OldUpgrade), - Downgrade = merge_update_actions(diff_app(App, PrevAppIdx, CurrAppIdx), OldDowngrade), + Upgrade = merge_update_actions(App, diff_app(App, CurrAppIdx, PrevAppIdx), OldUpgrade), + Downgrade = merge_update_actions(App, diff_app(App, PrevAppIdx, CurrAppIdx), OldDowngrade), if OldUpgrade =:= Upgrade andalso OldDowngrade =:= Downgrade -> %% The appup file has been already updated: []; @@ -192,22 +199,24 @@ find_old_appup_actions(App, PrevVersion) -> end, {ensure_version(PrevVersion, Upgrade0), ensure_version(PrevVersion, Downgrade0)}. -merge_update_actions(Changes, Vsns) -> +merge_update_actions(App, Changes, Vsns) -> lists:map(fun(Ret = {<<".*">>, _}) -> Ret; ({Vsn, Actions}) -> - {Vsn, do_merge_update_actions(Changes, Actions)} + {Vsn, do_merge_update_actions(App, Changes, Actions)} end, 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)), New = New0 -- AlreadyHandled, Changed = Changed0 -- AlreadyHandled, Deleted = Deleted0 -- AlreadyHandled, [{load_module, M, brutal_purge, soft_purge, []} || M <- Changed ++ New] ++ OldActions ++ - [{delete_module, M} || M <- Deleted]. + [{delete_module, M} || M <- Deleted] ++ + AppSpecific. %% @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(_) -> []. -ensure_version(Version, Versions) -> - case lists:keyfind(Version, 1, Versions) of +ensure_version(Version, OldInstructions) -> + OldVersions = [ensure_string(element(1, I)) || I <- OldInstructions], + case lists:member(Version, OldVersions) of false -> - [{Version, []}|Versions]; + [{Version, []}|OldInstructions]; _ -> - Versions + OldInstructions end. read_appup(File) -> @@ -288,8 +298,9 @@ create_stub(App) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% index_apps(ReleaseDir) -> - maps:from_list([index_app(filename:join(ReleaseDir, AppFile)) || - AppFile <- filelib:wildcard("**/ebin/*.app", ReleaseDir)]). + Apps0 = maps:from_list([index_app(filename:join(ReleaseDir, AppFile)) || + AppFile <- filelib:wildcard("**/ebin/*.app", ReleaseDir)]), + maps:without(ignored_apps(), Apps0). index_app(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), if NewVersion =:= OldVersion andalso NChanges > 0 -> 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 -> ok end, @@ -425,3 +439,8 @@ log(Msg) -> log(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. diff --git a/src/emqx.appup.src b/src/emqx.appup.src index e4eb459a9..eaecf0b52 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -1,37 +1,36 @@ %% -*- mode: erlang -*- -Instructions = -{"4.3.10", - [ - %% 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,[]}, +{VSN, + [{"4.3.9", + [{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,[]} - ]}, - {"4.3.7", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,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_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_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,[]} - ]}, - {"4.3.6", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.3.6", + [{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_ctl,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,[]} - ]}, - {"4.3.5", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.3.5", + [{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,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_mqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.4", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.3.4", + [{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,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_mqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.3", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.3.3", + [{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,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_mqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.2", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.3.2", + [{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,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_mqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.1", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.3.1", + [{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,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_pqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_mqueue,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.0", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"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_misc,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_access_rule,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", [ - {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,[]}, + [{"4.3.9", + [{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,[]} - ]}, - {"4.3.7", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,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_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_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.6", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"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_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.5", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"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_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.4", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"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_misc,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_ctl,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.3", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"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_misc,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_ctl,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.2", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"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_misc,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_ctl,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.1", [ + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"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_misc,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_access_rule,brutal_purge,soft_purge,[]}, {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,brutal_purge,soft_purge,[]} - ]}, - {"4.3.0", [ - {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.3.0", + [{load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,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_pqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_mqueue,brutal_purge,soft_purge,[]}, - {load_module,emqx_rpc,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). + {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}]}.