diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..e5b41e68 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +## 2.0.0 + +* Enhancements + * Return a task when sending a Sentry event + +* Bug Fixes + * Ensure `mix sentry.send_test_event` finishes sending event before ending Mix task + +* Backward incompatible changes + * `Sentry.capture_exception/1` now returns a `Task` instead of `{:ok, PID}` diff --git a/lib/mix/tasks/sentry.send_test_event.ex b/lib/mix/tasks/sentry.send_test_event.ex index 09594421..ba2b278d 100644 --- a/lib/mix/tasks/sentry.send_test_event.ex +++ b/lib/mix/tasks/sentry.send_test_event.ex @@ -30,8 +30,10 @@ defmodule Mix.Tasks.Sentry.SendTestEvent do def maybe_send_event(env_name, included_envs) do if env_name in included_envs do - Mix.shell.info "Sending test event!" + Mix.shell.info "Sending test event..." Sentry.capture_exception(RuntimeError.exception("Testing sending Sentry event")) + |> Task.await() + Mix.shell.info "Test event sent!" else Mix.shell.info "#{inspect env_name} is not in #{inspect included_envs} so no test event will be sent" end diff --git a/lib/sentry.ex b/lib/sentry.ex index 6618f7bf..916302b6 100644 --- a/lib/sentry.ex +++ b/lib/sentry.ex @@ -1,6 +1,6 @@ defmodule Sentry do use Application - + import Supervisor.Spec alias Sentry.Event require Logger @@ -66,7 +66,9 @@ defmodule Sentry do @use_error_logger Application.get_env(:sentry, :use_error_logger, false) def start(_type, _opts) do - children = [] + children = [ + supervisor(Task.Supervisor, [[name: Sentry.TaskSupervisor]]), + ] opts = [strategy: :one_for_one, name: Sentry.Supervisor] diff --git a/lib/sentry/client.ex b/lib/sentry/client.ex index 4220ee49..021b22c6 100644 --- a/lib/sentry/client.ex +++ b/lib/sentry/client.ex @@ -26,7 +26,7 @@ defmodule Sentry.Client do auth_headers = authorization_headers(public_key, secret_key) body = Poison.encode!(event) - Task.start(fn -> + Task.Supervisor.async_nolink(Sentry.TaskSupervisor, fn -> try_request(:post, endpoint, auth_headers, body) end) end