@@ -85,6 +85,13 @@ delay_message(Exchange, Message, Delay) ->
85
85
infinity ).
86
86
87
87
setup_mnesia () ->
88
+ case rabbit_khepri :is_enabled () of
89
+ true ->
90
+ ensure_mnesia_running ();
91
+ false ->
92
+ % % Mnesia should already be running
93
+ ok
94
+ end ,
88
95
_ = mnesia :create_table (? TABLE_NAME , [{record_name , delay_entry },
89
96
{attributes ,
90
97
record_info (fields , delay_entry )},
@@ -97,6 +104,25 @@ setup_mnesia() ->
97
104
{disc_copies , [node ()]}]),
98
105
rabbit_table :wait ([? TABLE_NAME , ? INDEX_TABLE_NAME ]).
99
106
107
+ ensure_mnesia_running () ->
108
+ case rabbit_mnesia :is_running () of
109
+ false ->
110
+ ensure_mnesia_disc_schema (),
111
+ rabbit_mnesia :start_mnesia (_CheckConsistency = false );
112
+ true ->
113
+ ok
114
+ end .
115
+
116
+ ensure_mnesia_disc_schema () ->
117
+ case mnesia :system_info (use_dir ) of
118
+ true ->
119
+ % % There is a disc schema already
120
+ ok ;
121
+ false ->
122
+ rabbit_misc :ensure_ok (mnesia :create_schema ([node ()]),
123
+ {? MODULE , cannot_create_mnesia_schema })
124
+ end .
125
+
100
126
disable_plugin () ->
101
127
_ = mnesia :delete_table (? INDEX_TABLE_NAME ),
102
128
_ = mnesia :delete_table (? TABLE_NAME ),
0 commit comments