diff --git a/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_stream_scheduler.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_stream_scheduler.erl index 9b1f15aa4..80dee0e4d 100644 --- a/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_stream_scheduler.erl +++ b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_stream_scheduler.erl @@ -136,10 +136,13 @@ next_stream(ItStream0 = #iter{limit = N, filter = Filter, it = It0, it_cont = It false -> next_stream(ItStream) end; - none -> + none when It0 =/= ItCont -> %% Restart the iteration from the beginning: ItStream = ItStream0#iter{it = ItCont}, - next_stream(ItStream) + next_stream(ItStream); + none -> + %% No point in restarting the iteration, `ItCont` is empty: + none end. is_fetchable(_Comm1, _Comm2, #srs{it_end = end_of_stream}) ->