fix(ds): avoid crashes when starting on Windows
@@ -4,6 +4,8 @@
-module(emqx_ds_app).
+-dialyzer({nowarn_function, storage/0}).
+
-export([start/2]).
-include("emqx_ds_int.hrl").
@@ -13,13 +15,22 @@ start(_Type, _Args) ->
emqx_ds_sup:start_link().
init_mnesia() ->
+ %% FIXME: This is a temporary workaround to avoid crashes when starting on Windows
ok = mria:create_table(
?SESSION_TAB,
[
{rlog_shard, ?DS_SHARD},
{type, set},
- {storage, rocksdb_copies},
+ {storage, storage()},
{record_name, session},
{attributes, record_info(fields, session)}
]
).
+storage() ->
+ case mria:rocksdb_backend_available() of
+ true ->
+ rocksdb_copies;
+ _ ->
+ disc_copies
+ end.
@@ -2,7 +2,7 @@
{application, emqx_durable_storage, [
{description, "Message persistence and subscription replays for EMQX"},
% strict semver, bump manually!
- {vsn, "0.1.1"},
+ {vsn, "0.1.2"},
{modules, []},
{registered, []},
{applications, [kernel, stdlib, rocksdb, gproc, mria]},
@@ -0,0 +1 @@
+Fixed this [#11345](https://github.com/emqx/emqx/issues/11345) crash issue when starting on Windows or any other platform without RocksDB support.