diff --git a/apps/emqx/src/emqx_persistent_session_ds.erl b/apps/emqx/src/emqx_persistent_session_ds.erl index 13c35ed9b..43ca8bc02 100644 --- a/apps/emqx/src/emqx_persistent_session_ds.erl +++ b/apps/emqx/src/emqx_persistent_session_ds.erl @@ -146,16 +146,11 @@ del_subscription(IteratorID, TopicFilterBin, DSSessionID) -> begin TopicFilter = emqx_topic:words(TopicFilterBin), Ctx = #{iterator_id => IteratorID}, - case IteratorID of - undefined -> - ok; - _ -> - ?tp_span( - persistent_session_ds_close_iterators, - Ctx, - ok = ensure_iterator_closed_on_all_shards(IteratorID) - ) - end, + ?tp_span( + persistent_session_ds_close_iterators, + Ctx, + ok = ensure_iterator_closed_on_all_shards(IteratorID) + ), ?tp_span( persistent_session_ds_iterator_delete, Ctx, diff --git a/apps/emqx/src/emqx_session.erl b/apps/emqx/src/emqx_session.erl index 1ff4d9b85..859cee76b 100644 --- a/apps/emqx/src/emqx_session.erl +++ b/apps/emqx/src/emqx_session.erl @@ -357,8 +357,13 @@ unsubscribe( session(). remove_persistent_subscription(Session, TopicFilterBin, ClientId) -> Iterators = Session#session.iterators, - IteratorId = maps:get(TopicFilterBin, Iterators, undefined), - _ = emqx_persistent_session_ds:del_subscription(IteratorId, TopicFilterBin, ClientId), + case maps:get(TopicFilterBin, Iterators, undefined) of + undefined -> + ok; + IteratorId -> + _ = emqx_persistent_session_ds:del_subscription(IteratorId, TopicFilterBin, ClientId), + ok + end, Session#session{iterators = maps:remove(TopicFilterBin, Iterators)}. %%--------------------------------------------------------------------