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

feat(modules): manage mria tables explicitly during startup

Andrew Mayorov 2 лет назад
Родитель
Сommit
b07df487f0
2 измененных файлов с 6 добавлено и 7 удалено
  1. 5 7
      apps/emqx_modules/src/emqx_delayed.erl
  2. 1 0
      apps/emqx_modules/src/emqx_modules_app.erl

+ 5 - 7
apps/emqx_modules/src/emqx_delayed.erl

@@ -25,12 +25,8 @@
 -include_lib("snabbkaffe/include/snabbkaffe.hrl").
 -include_lib("snabbkaffe/include/snabbkaffe.hrl").
 -include_lib("emqx/include/emqx_hooks.hrl").
 -include_lib("emqx/include/emqx_hooks.hrl").
 
 
-%% Mnesia bootstrap
--export([mnesia/1]).
-
--boot_mnesia({mnesia, [boot]}).
-
 -export([
 -export([
+    create_tables/0,
     start_link/0,
     start_link/0,
     on_message_publish/1
     on_message_publish/1
 ]).
 ]).
@@ -118,14 +114,16 @@
 %%------------------------------------------------------------------------------
 %%------------------------------------------------------------------------------
 %% Mnesia bootstrap
 %% Mnesia bootstrap
 %%------------------------------------------------------------------------------
 %%------------------------------------------------------------------------------
-mnesia(boot) ->
+
+create_tables() ->
     ok = mria:create_table(?TAB, [
     ok = mria:create_table(?TAB, [
         {type, ordered_set},
         {type, ordered_set},
         {storage, disc_copies},
         {storage, disc_copies},
         {local_content, true},
         {local_content, true},
         {record_name, delayed_message},
         {record_name, delayed_message},
         {attributes, record_info(fields, delayed_message)}
         {attributes, record_info(fields, delayed_message)}
-    ]).
+    ]),
+    [?TAB].
 
 
 %%------------------------------------------------------------------------------
 %%------------------------------------------------------------------------------
 %% Hooks
 %% Hooks

+ 1 - 0
apps/emqx_modules/src/emqx_modules_app.erl

@@ -24,6 +24,7 @@
 ]).
 ]).
 
 
 start(_Type, _Args) ->
 start(_Type, _Args) ->
+    ok = mria:wait_for_tables(emqx_delayed:create_tables()),
     {ok, Sup} = emqx_modules_sup:start_link(),
     {ok, Sup} = emqx_modules_sup:start_link(),
     maybe_enable_modules(),
     maybe_enable_modules(),
     {ok, Sup}.
     {ok, Sup}.