From 9a81f22105ef7d7223631652a56fb9889e13863e Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Thu, 22 Jun 2023 17:07:30 +0200 Subject: [PATCH] fix(ds): Apply review remarks --- apps/emqx_durable_storage/src/emqx_ds.erl | 15 ++++++++++++++- .../src/emqx_ds_message_storage_bitmask.erl | 6 +++--- apps/emqx_durable_storage/src/emqx_ds_replay.erl | 15 ++------------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/apps/emqx_durable_storage/src/emqx_ds.erl b/apps/emqx_durable_storage/src/emqx_ds.erl index f0fde46c5..230ca3f9f 100644 --- a/apps/emqx_durable_storage/src/emqx_ds.erl +++ b/apps/emqx_durable_storage/src/emqx_ds.erl @@ -39,7 +39,10 @@ message_store_opts/0, session_id/0, iterator_id/0, - iterator/0 + iterator/0, + shard/0, + topic/0, + time/0 ]). -include("emqx_ds_int.hrl"). @@ -62,6 +65,16 @@ -type message_id() :: binary(). +%% Parsed topic: +-type topic() :: list(binary()). + +-type shard() :: binary(). + +%% Timestamp +%% Earliest possible timestamp is 0. +%% TODO granularity? +-type time() :: non_neg_integer(). + %%================================================================================ %% API funcions %%================================================================================ diff --git a/apps/emqx_durable_storage/src/emqx_ds_message_storage_bitmask.erl b/apps/emqx_durable_storage/src/emqx_ds_message_storage_bitmask.erl index 7adcb8566..5bb0423d5 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_message_storage_bitmask.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_message_storage_bitmask.erl @@ -38,9 +38,9 @@ %% to map topics to fixed-length bitstrings while keeping some degree %% of information about the hierarchy. %% -%% Next important concept is what we call "epoch". It is time -%% interval determined by the number of least significant bits of the -%% timestamp found at the tail of the rocksdb key. +%% Next important concept is what we call "epoch". Duration of the +%% epoch is determined by maximum time offset. Epoch is calculated by +%% shifting bits of the timestamp right. %% %% The resulting index is a space-filling curve that looks like %% this in the topic-time 2D space: diff --git a/apps/emqx_durable_storage/src/emqx_ds_replay.erl b/apps/emqx_durable_storage/src/emqx_ds_replay.erl index db49c368d..a66cee7fd 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_replay.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_replay.erl @@ -6,28 +6,17 @@ %% API: -export([]). --export_type([topic/0, time/0, shard/0]). -export_type([replay_id/0, replay/0]). %%================================================================================ %% Type declarations %%================================================================================ -%% parsed --type topic() :: list(binary()). - --type shard() :: binary(). - -%% Timestamp -%% Earliest possible timestamp is 0. -%% TODO granularity? --type time() :: non_neg_integer(). - -type replay_id() :: binary(). -type replay() :: { - _TopicFilter :: topic(), - _StartTime :: time() + _TopicFilter :: emqx_ds:topic(), + _StartTime :: emqx_ds:time() }. %%================================================================================