From 130a5a54425e8a27f60b001fe9800fdac291cbcd Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Mon, 4 Dec 2023 13:12:27 +0300 Subject: [PATCH] fix(ds): pass topics to `emqx_topic:words/1` before feeding LTS tree So that empty levels in topics will be properly mapped into `''` atoms. --- .../emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl b/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl index 6a69a20f3..c2f533673 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl @@ -368,7 +368,7 @@ check_message( #{?tag := ?IT, ?start_time := StartTime, ?topic_filter := TopicFilter}, #message{timestamp = Timestamp, topic = Topic} ) when Timestamp >= StartTime -> - emqx_topic:match(emqx_topic:words(Topic), TopicFilter); + emqx_topic:match(emqx_topic:tokens(Topic), TopicFilter); check_message(_Cutoff, _It, _Msg) -> false. @@ -378,7 +378,7 @@ format_key(KeyMapper, Key) -> -spec make_key(s(), emqx_types:message()) -> {binary(), [binary()]}. make_key(#s{keymappers = KeyMappers, trie = Trie}, #message{timestamp = Timestamp, topic = TopicBin}) -> - Tokens = emqx_topic:tokens(TopicBin), + Tokens = emqx_topic:words(TopicBin), {TopicIndex, Varying} = emqx_ds_lts:topic_key(Trie, fun threshold_fun/1, Tokens), VaryingHashes = [hash_topic_level(I) || I <- Varying], KeyMapper = array:get(length(Varying), KeyMappers),