fix(static-cluster): fix the issue that static cluster failure caused by the wrong way of creating tables

This commit is contained in:
zhouzb 2020-08-11 16:58:21 +08:00 committed by tigercl
parent aaf29ee164
commit 87780c1c1b
2 changed files with 47 additions and 19 deletions

View File

@ -23,6 +23,12 @@
-logger_header("[Alarm Handler]").
%% Mnesia bootstrap
-export([mnesia/1]).
-boot_mnesia({mnesia, [boot]}).
-copy_mnesia({mnesia, [copy]}).
-export([ start_link/1
, stop/0
]).
@ -88,6 +94,27 @@
-compile(nowarn_export_all).
-endif.
%%--------------------------------------------------------------------
%% Mnesia bootstrap
%%--------------------------------------------------------------------
mnesia(boot) ->
ok = ekka_mnesia:create_table(?ACTIVATED_ALARM,
[{type, set},
{disc_copies, [node()]},
{local_content, true},
{record_name, activated_alarm},
{attributes, record_info(fields, activated_alarm)}]),
ok = ekka_mnesia:create_table(?DEACTIVATED_ALARM,
[{type, ordered_set},
{disc_copies, [node()]},
{local_content, true},
{record_name, deactivated_alarm},
{attributes, record_info(fields, deactivated_alarm)}]);
mnesia(copy) ->
ok = ekka_mnesia:copy_table(?ACTIVATED_ALARM),
ok = ekka_mnesia:copy_table(?DEACTIVATED_ALARM).
%%--------------------------------------------------------------------
%% API
%%--------------------------------------------------------------------
@ -130,18 +157,6 @@ init([]) ->
Opts = [{actions, [log, publish]}],
init([Opts]);
init([Opts]) ->
ok = ekka_mnesia:create_table(?ACTIVATED_ALARM,
[{type, set},
{disc_copies, [node()]},
{local_content, true},
{record_name, activated_alarm},
{attributes, record_info(fields, activated_alarm)}]),
ok = ekka_mnesia:create_table(?DEACTIVATED_ALARM,
[{type, ordered_set},
{disc_copies, [node()]},
{local_content, true},
{record_name, deactivated_alarm},
{attributes, record_info(fields, deactivated_alarm)}]),
deactivate_all_alarms(),
Actions = proplists:get_value(actions, Opts),
SizeLimit = proplists:get_value(size_limit, Opts),

View File

@ -22,6 +22,12 @@
-include_lib("emqx/include/emqx.hrl").
-include_lib("emqx/include/logger.hrl").
%% Mnesia bootstrap
-export([mnesia/1]).
-boot_mnesia({mnesia, [boot]}).
-copy_mnesia({mnesia, [copy]}).
%% emqx_gen_mod callbacks
-export([ load/1
, unload/1
@ -50,6 +56,20 @@
-define(SERVER, ?MODULE).
-define(MAX_INTERVAL, 4294967).
%%--------------------------------------------------------------------
%% Mnesia bootstrap
%%--------------------------------------------------------------------
mnesia(boot) ->
ok = ekka_mnesia:create_table(?TAB, [
{type, ordered_set},
{disc_copies, [node()]},
{local_content, true},
{record_name, delayed_message},
{attributes, record_info(fields, delayed_message)}]);
mnesia(copy) ->
ok = ekka_mnesia:copy_table(?TAB, disc_copies).
%%--------------------------------------------------------------------
%% Load/Unload
%%--------------------------------------------------------------------
@ -107,13 +127,6 @@ store(DelayedMsg) ->
%%--------------------------------------------------------------------
init([]) ->
ok = ekka_mnesia:create_table(?TAB, [
{type, ordered_set},
{disc_copies, [node()]},
{local_content, true},
{record_name, delayed_message},
{attributes, record_info(fields, delayed_message)}]),
ok = ekka_mnesia:copy_table(?TAB, disc_copies),
{ok, ensure_publish_timer(#{timer => undefined, publish_at => 0})}.
handle_call({store, DelayedMsg = #delayed_message{key = Key}}, _From, State) ->