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.