Skip to content

Commit aa7396c

Browse files
committed
Use :erlang.start_timer instead of simple Process.send_after
1 parent 8da1104 commit aa7396c

2 files changed

Lines changed: 6 additions & 5 deletions

File tree

lib/posthog/sender.ex

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ defmodule PostHog.Sender do
8181
{:continue, :send_batch}}
8282

8383
%{num_events: 0, events: events} ->
84-
ref = Process.send_after(self(), :batch_time_reached, state.max_batch_time_ms)
84+
ref = :erlang.start_timer(state.max_batch_time_ms, self(), :batch_time_reached)
8585

8686
{:noreply, %{state | events: [event | events], num_events: 1, timer_ref: ref}}
8787

@@ -91,11 +91,12 @@ defmodule PostHog.Sender do
9191
end
9292

9393
@impl GenServer
94-
def handle_info(:batch_time_reached, %{num_events: n} = state) when n > 0 do
94+
def handle_info({:timeout, ref, :batch_time_reached}, %{num_events: n, timer_ref: ref} = state)
95+
when n > 0 do
9596
{:noreply, state, {:continue, :send_batch}}
9697
end
9798

98-
def handle_info(:batch_time_reached, state), do: {:noreply, state}
99+
def handle_info({:timeout, _ref, :batch_time_reached}, state), do: {:noreply, state}
99100

100101
@impl GenServer
101102
def handle_continue(:send_batch, state) do

test/posthog/sender_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,10 @@ defmodule PostHog.SenderTest do
249249
[{^pid, :busy}] = Registry.lookup(registry, {PostHog.Sender, 1})
250250
send(pid, :go)
251251
assert_receive :done
252-
:sys.get_status(pid)
252+
%{timer_ref: ref} = :sys.get_state(pid)
253253
[{^pid, :available}] = Registry.lookup(registry, {PostHog.Sender, 1})
254254

255-
send(pid, :batch_time_reached)
255+
send(pid, {:timeout, ref, :batch_time_reached})
256256
refute_receive :ready
257257
end
258258
end

0 commit comments

Comments
 (0)