Просмотр исходного кода

fix(modules): load application first for ekka_mnesia scanner

JianBo He 4 лет назад
Родитель
Сommit
49b7d870e0
1 измененных файлов с 15 добавлено и 0 удалено
  1. 15 0
      src/emqx_app.erl

+ 15 - 0
src/emqx_app.erl

@@ -36,11 +36,14 @@ start(_Type, _Args) ->
     set_backtrace_depth(),
     print_otp_version_warning(),
     print_banner(),
+    %% Load application first for ekka_mnesia scanner
+    _ = load_ce_modules(),
     ekka:start(),
     {ok, Sup} = emqx_sup:start_link(),
     ok = start_autocluster(),
     ok = emqx_plugins:init(),
     _ = emqx_plugins:load(),
+    _ = start_ce_modules(),
     emqx_boot:is_enabled(listeners) andalso (ok = emqx_listeners:start()),
     register(emqx, self()),
     ok = emqx_alarm_handler:load(),
@@ -58,6 +61,18 @@ set_backtrace_depth() ->
     _ = erlang:system_flag(backtrace_depth, Depth),
     ok.
 
+-ifndef(EMQX_ENTERPRISE).
+load_ce_modules() ->
+    application:load(emqx_modules).
+start_ce_modules() ->
+    application:ensure_all_started(emqx_modules).
+-else.
+load_ce_modules() ->
+    ok.
+start_ce_modules() ->
+    ok.
+-endif.
+
 %%--------------------------------------------------------------------
 %% Print Banner
 %%--------------------------------------------------------------------