From b56597679450c5507d833c2d50c165885e346591 Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Sat, 29 Jun 2024 15:49:42 +0200 Subject: [PATCH] fix(ds): Fix hashing of empty wildcard topic levels in bitfield_lts --- .../emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 20c3bc087..d5834546f 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 @@ -596,7 +596,7 @@ prepare_loop_context(DB, CF, TopicIndex, StartTime, SafeCutoffTime, Varying, Key fun ('+') -> any; - (TopicLevel) when is_binary(TopicLevel) -> + (TopicLevel) when is_binary(TopicLevel); TopicLevel =:= '' -> {'=', hash_topic_level(TopicLevel)} end, Varying @@ -831,6 +831,8 @@ threshold_fun(0) -> threshold_fun(_) -> 20. +hash_topic_level('') -> + hash_topic_level(<<>>); hash_topic_level(TopicLevel) -> <> = erlang:md5(TopicLevel), Int.