From 4c88770353a582c49237902e70fee2140f6dbaf6 Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Wed, 7 Oct 2026 15:48:31 -0700 Subject: [PATCH 1/3] test: make sender_test.exs exercise sender supervision --- test/posthog/sender_test.exs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/posthog/sender_test.exs b/test/posthog/sender_test.exs index 94c7b18..0eadbce 100644 --- a/test/posthog/sender_test.exs +++ b/test/posthog/sender_test.exs @@ -188,15 +188,14 @@ defmodule PostHog.SenderTest do end test "sends leftovers on shutdown", %{api_client: api_client} do - pid = - start_supervised!( - {Sender, - supervisor_name: @supervisor_name, - index: 1, - api_client: api_client, - max_batch_time_ms: 60_000, - max_batch_events: 100} - ) + start_supervised!( + {Sender, + supervisor_name: @supervisor_name, + index: 1, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 100} + ) expect(API.Mock, :request, fn _client, method, url, opts -> assert method == :post @@ -209,7 +208,7 @@ defmodule PostHog.SenderTest do Sender.send("foo", @supervisor_name) - assert :ok = GenServer.stop(pid) + assert :ok = stop_supervised(Sender) end test "does not send empty batch", %{api_client: api_client, registry: registry} do From ee6600749c8f5616a7a851a08f66be02791f061d Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Wed, 7 Oct 2026 15:49:48 -0700 Subject: [PATCH 2/3] fix: correctly trap exits in Sender --- lib/posthog/sender.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/posthog/sender.ex b/lib/posthog/sender.ex index 0970fa3..e914d1a 100644 --- a/lib/posthog/sender.ex +++ b/lib/posthog/sender.ex @@ -20,7 +20,6 @@ defmodule PostHog.Sender do |> PostHog.Registry.via(__MODULE__, opts[:index]) callers = Process.get(:"$callers", []) - Process.flag(:trap_exit, true) GenServer.start_link(__MODULE__, {opts, callers}, name: name) end @@ -70,6 +69,8 @@ defmodule PostHog.Sender do @impl GenServer def init({opts, callers}) do + Process.flag(:trap_exit, true) + state = %__MODULE__{ registry: PostHog.Registry.registry_name(opts[:supervisor_name]), index: Keyword.fetch!(opts, :index), From f4ef911e4d80dd1386a01ae9c7a86f9d9df16437 Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Wed, 7 Oct 2026 18:10:50 -0700 Subject: [PATCH 3/3] chore: add sampo changeset --- .sampo/changesets/flush-on-process-exit.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .sampo/changesets/flush-on-process-exit.md diff --git a/.sampo/changesets/flush-on-process-exit.md b/.sampo/changesets/flush-on-process-exit.md new file mode 100644 index 0000000..add6a65 --- /dev/null +++ b/.sampo/changesets/flush-on-process-exit.md @@ -0,0 +1,5 @@ +--- +hex/posthog: patch +--- + +Fix `PostHog.Sender` not flushing all events on app termination.