diff --git a/apps/emqx/src/emqx_persistent_session_ds.erl b/apps/emqx/src/emqx_persistent_session_ds.erl index 3bfa82298..27b4f0950 100644 --- a/apps/emqx/src/emqx_persistent_session_ds.erl +++ b/apps/emqx/src/emqx_persistent_session_ds.erl @@ -39,10 +39,9 @@ init() -> ?WHEN_ENABLED( - begin - _ = emqx_ds_storage_layer_sup:start_shard(?DS_SHARD), - ok - end + ok = emqx_ds:ensure_shard(?DS_SHARD, #{ + dir => filename:join([emqx:data_dir(), ds, messages, ?DS_SHARD]) + }) ). %% diff --git a/apps/emqx_durable_storage/src/emqx_ds.erl b/apps/emqx_durable_storage/src/emqx_ds.erl index 230ca3f9f..9eccf8c16 100644 --- a/apps/emqx_durable_storage/src/emqx_ds.erl +++ b/apps/emqx_durable_storage/src/emqx_ds.erl @@ -16,6 +16,7 @@ -module(emqx_ds). %% API: +-export([ensure_shard/2]). %% Messages: -export([message_store/2, message_store/1, message_stats/0]). %% Iterator: @@ -79,6 +80,18 @@ %% API funcions %%================================================================================ +-spec ensure_shard(shard(), emqx_ds_storage_layer:options()) -> + ok | {error, _Reason}. +ensure_shard(Shard, Options) -> + case emqx_ds_storage_layer_sup:start_shard(Shard, Options) of + {ok, _Pid} -> + ok; + {error, {already_started, _Pid}} -> + ok; + {error, Reason} -> + {error, Reason} + end. + %%-------------------------------------------------------------------------------- %% Message %%--------------------------------------------------------------------------------