Przeglądaj źródła

fix(dssubs): avoid running `on_stream_replay` twice on renew streams

Andrew Mayorov 1 rok temu
rodzic
commit
c391890699

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

@@ -688,15 +688,11 @@ handle_timeout(
     %% `gc` and `renew_streams` methods may drop unsubscribed streams.
     %% Shared subscription handler must have a chance to see unsubscribed streams
     %% in the fully replayed state.
-    {S1, SchedS1, SharedSubS1} = emqx_persistent_session_ds_shared_subs:pre_renew_streams(
+    {S1, SchedS1, SharedSubS} = emqx_persistent_session_ds_shared_subs:on_streams_replay(
         S0, SchedS0, SharedSubS0
     ),
     S2 = emqx_persistent_session_ds_subs:gc(S1),
-    {S3, SchedS2} = emqx_persistent_session_ds_stream_scheduler:renew_streams(S2, SchedS1),
-    {S, SchedS, SharedSubS} =
-        emqx_persistent_session_ds_shared_subs:on_streams_replay(
-            S3, SchedS2, SharedSubS1
-        ),
+    {S, SchedS} = emqx_persistent_session_ds_stream_scheduler:renew_streams(S2, SchedS1),
     Interval = get_config(ClientInfo, [renew_streams_interval]),
     Session = set_timer(
         ?TIMER_GET_STREAMS,

+ 0 - 13
apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_shared_subs.erl

@@ -45,7 +45,6 @@
     on_streams_replay/3,
     on_info/3,
 
-    pre_renew_streams/3,
     renew_streams/3,
     to_map/2
 ]).
@@ -311,18 +310,6 @@ schedule_unsubscribe(
             SharedSubS0#{scheduled_actions := ScheduledActions1}
     end.
 
-%%--------------------------------------------------------------------
-%% pre_renew_streams
-
--spec pre_renew_streams(
-    emqx_persistent_session_ds_state:t(),
-    emqx_persistent_session_ds_stream_scheduler:t(),
-    t()
-) ->
-    {emqx_persistent_session_ds_state:t(), emqx_persistent_session_ds_stream_scheduler:t(), t()}.
-pre_renew_streams(S, SchedS, SharedS) ->
-    on_streams_replay(S, SchedS, SharedS).
-
 %%--------------------------------------------------------------------
 %% renew_streams