From 6f575aedd9bfba9ad9b9fd2527ded7bacce7b800 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 3 Nov 2022 12:37:00 +0100 Subject: [PATCH] chore: sync emqx_relup to ce --- src/emqx.appup.src | 6 ++++-- src/emqx_relup.erl | 23 +++++++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 6c3c1b080..258217a91 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -2,7 +2,8 @@ %% Unless you know what you are doing, DO NOT edit manually!! {VSN, [{"4.4.10", - [{load_module,emqx_hooks,brutal_purge,soft_purge,[]}, + [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, + {load_module,emqx_hooks,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -287,7 +288,8 @@ {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], [{"4.4.10", - [{load_module,emqx_hooks,brutal_purge,soft_purge,[]}, + [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, + {load_module,emqx_hooks,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, diff --git a/src/emqx_relup.erl b/src/emqx_relup.erl index 3ad2eb250..dc25aa8ce 100644 --- a/src/emqx_relup.erl +++ b/src/emqx_relup.erl @@ -46,11 +46,30 @@ reload_components() -> ?INFO("reloading module providers ..."), emqx_modules:load_providers(), ?INFO("loading plugins ..."), - emqx_plugins:load(). + _ = load_plugins(), + %% upgrade from e4.3.0~4.3.4 to >=4.3.5 requires persistent default modules after upgrade. + %% because the emqx_modules' env is lost when pre_upgrade. + %% must after emqx_modules plugin load(for loading emqx_modules' env) + case erlang:function_exported(emqx_modules, persistent_default_modules, 0) of + true -> + ?INFO("persistent default modules ..."), + emqx_modules:persistent_default_modules(); + false -> ok + end, + ok. + -else. reload_components() -> ?INFO("reloading resource providers ..."), emqx_rule_engine:load_providers(), ?INFO("loading plugins ..."), - emqx_plugins:load(). + load_plugins(), + ok. + -endif. + +load_plugins() -> + case erlang:function_exported(emqx_plugins, force_load, 0) of + true -> emqx_plugins:force_load(); + false -> emqx_plugins:load() + end.