Просмотр исходного кода

refactor(buffer_worker): avoid starting 0-time timers

Thales Macedo Garitezi 3 лет назад
Родитель
Сommit
167b7a212f
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      apps/emqx_resource/src/emqx_resource_buffer_worker.erl

+ 6 - 0
apps/emqx_resource/src/emqx_resource_buffer_worker.erl

@@ -1540,6 +1540,12 @@ clear_disk_queue_dir(Id, Index) ->
 ensure_flush_timer(Data = #{batch_time := T}) ->
     ensure_flush_timer(Data, T).
 
+ensure_flush_timer(Data = #{tref := undefined}, 0) ->
+    %% if the batch_time is 0, we don't need to start a timer, which
+    %% can be costly at high rates.
+    Ref = make_ref(),
+    self() ! {flush, {Ref, Ref}},
+    Data#{tref => {Ref, Ref}};
 ensure_flush_timer(Data = #{tref := undefined}, T) ->
     Ref = make_ref(),
     TRef = erlang:send_after(T, self(), {flush, Ref}),