From daf4e86da113653c19ae7612865a8d1c73d6bff6 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Thu, 6 Jul 2023 17:43:12 +0200 Subject: [PATCH] feat(ds): add `ensure_shard/2` shortcut And use it in `emqx_persistent_session_ds:init()` backend initialization function. --- apps/emqx/src/emqx_persistent_session_ds.erl | 7 +++---- apps/emqx_durable_storage/src/emqx_ds.erl | 13 +++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) 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 %%--------------------------------------------------------------------------------