From 14b76916dfe22f015a7276d495c867592f5e21f9 Mon Sep 17 00:00:00 2001 From: firest Date: Wed, 26 Jul 2023 15:37:58 +0800 Subject: [PATCH 1/3] fix(ds): avoid crashes when starting on Windows --- apps/emqx_durable_storage/src/emqx_ds_app.erl | 10 +++++++++- .../src/emqx_durable_storage.app.src | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/emqx_durable_storage/src/emqx_ds_app.erl b/apps/emqx_durable_storage/src/emqx_ds_app.erl index fb4d487e9..73269d61c 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_app.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_app.erl @@ -13,12 +13,20 @@ start(_Type, _Args) -> emqx_ds_sup:start_link(). init_mnesia() -> + %% FIXME: This is a temporary workaround to avoid crashes when starting on Windows + Storage = + case mria:rocksdb_backend_available() of + true -> + rocksdb_copies; + _ -> + disc_copies + end, 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)} ] 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]}, From 470426872775a0bc59aca0de79b0e35a556e2626 Mon Sep 17 00:00:00 2001 From: firest Date: Wed, 26 Jul 2023 15:44:39 +0800 Subject: [PATCH 2/3] chore: update changes --- changes/ce/fix-11352.en.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/ce/fix-11352.en.md 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. From abf8d8b391de7b800af73cbf4b15cba558c1f6e1 Mon Sep 17 00:00:00 2001 From: firest Date: Wed, 26 Jul 2023 16:35:07 +0800 Subject: [PATCH 3/3] fix(ds): make dialyzer happy --- apps/emqx_durable_storage/src/emqx_ds_app.erl | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/emqx_durable_storage/src/emqx_ds_app.erl b/apps/emqx_durable_storage/src/emqx_ds_app.erl index 73269d61c..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"). @@ -14,20 +16,21 @@ start(_Type, _Args) -> init_mnesia() -> %% FIXME: This is a temporary workaround to avoid crashes when starting on Windows - Storage = - case mria:rocksdb_backend_available() of - true -> - rocksdb_copies; - _ -> - disc_copies - end, ok = mria:create_table( ?SESSION_TAB, [ {rlog_shard, ?DS_SHARD}, {type, set}, - {storage, Storage}, + {storage, storage()}, {record_name, session}, {attributes, record_info(fields, session)} ] ). + +storage() -> + case mria:rocksdb_backend_available() of + true -> + rocksdb_copies; + _ -> + disc_copies + end.