Преглед изворни кода

fix(sessds): Trigger stream renewal after encountering end of stream

ieQu1 пре 1 година
родитељ
комит
8355dba50f
1 измењених фајлова са 6 додато и 1 уклоњено
  1. 6 1
      apps/emqx/src/emqx_persistent_session_ds.erl

+ 6 - 1
apps/emqx/src/emqx_persistent_session_ds.erl

@@ -1243,7 +1243,12 @@ do_enqueue_batch(IsReplay, Session, ClientInfo, StreamKey, Srs0, ItBegin, FetchR
             SchedS = emqx_persistent_session_ds_stream_scheduler:on_enqueue(
                 IsReplay, StreamKey, Srs, S0, SchedS0
             ),
-            {ok, Srs, Session#{stream_scheduler_s := SchedS}};
+            %% FIXME: temporary workaround. Schedule stream renewal
+            %% after encountering end of stream. In the future this
+            %% should be done by the scheduler, immediately:
+            Interval = 1,
+            {ok, Srs,
+                ensure_timer(?TIMER_SHARED_SUB, Interval, Session#{stream_scheduler_s := SchedS})};
         {ok, ItEnd, Messages} ->
             {Inflight, LastSeqnoQos1, LastSeqnoQos2} = process_batch(
                 IsReplay,