diff --git a/apps/emqx_durable_storage/src/emqx_ds_app.erl b/apps/emqx_durable_storage/src/emqx_ds_app.erl index fb4d487e9..216e979ee 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_app.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_app.erl @@ -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. diff --git a/apps/emqx_durable_storage/src/emqx_durable_storage.app.src b/apps/emqx_durable_storage/src/emqx_durable_storage.app.src index 944477306..ecf9dd270 100644 --- a/apps/emqx_durable_storage/src/emqx_durable_storage.app.src +++ b/apps/emqx_durable_storage/src/emqx_durable_storage.app.src @@ -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]}, diff --git a/changes/ce/fix-11352.en.md b/changes/ce/fix-11352.en.md new file mode 100644 index 000000000..537bc2f5e --- /dev/null +++ b/changes/ce/fix-11352.en.md @@ -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.