@@ -141,10 +141,7 @@ defmodule ErrorTracker do
141141 if enabled? ( ) && ! ignored? ( error , context ) do
142142 sanitized_context = sanitize_context ( context )
143143
144- { _error , occurrence } =
145- upsert_error! ( error , stacktrace , sanitized_context , breadcrumbs , reason )
146-
147- occurrence
144+ upsert_error! ( error , stacktrace , sanitized_context , breadcrumbs , reason )
148145 else
149146 :noop
150147 end
@@ -183,7 +180,7 @@ defmodule ErrorTracker do
183180 Mutes the error so next ocurrences won't send telemetry events.
184181 """
185182 @ spec mute ( Error . t ( ) ) :: { :ok , Error . t ( ) } | { :error , Ecto.Changeset . t ( ) }
186- def mute ( error = % Error { muted: false } ) do
183+ def mute ( error = % Error { } ) do
187184 changeset = Ecto.Changeset . change ( error , muted: true )
188185
189186 Repo . update ( changeset )
@@ -193,7 +190,7 @@ defmodule ErrorTracker do
193190 Unmutes the error so next ocurrences will send telemetry events.
194191 """
195192 @ spec unmute ( Error . t ( ) ) :: { :ok , Error . t ( ) } | { :error , Ecto.Changeset . t ( ) }
196- def unmute ( error = % Error { muted: true } ) do
193+ def unmute ( error = % Error { } ) do
197194 changeset = Ecto.Changeset . change ( error , muted: false )
198195
199196 Repo . update ( changeset )
@@ -320,12 +317,16 @@ defmodule ErrorTracker do
320317 end
321318
322319 defp upsert_error! ( error , stacktrace , context , breadcrumbs , reason ) do
320+ status_and_muted_query =
321+ from e in Error ,
322+ where: [ fingerprint: ^ error . fingerprint ] ,
323+ select: { e . status , e . muted }
324+
323325 { existing_status , muted } =
324- Repo . one (
325- from e in Error ,
326- where: [ fingerprint: ^ error . fingerprint ] ,
327- select: { e . status , e . muted }
328- )
326+ case Repo . one ( status_and_muted_query ) do
327+ { existing_status , muted } -> { existing_status , muted }
328+ nil -> { nil , nil }
329+ end
329330
330331 { :ok , { error , occurrence } } =
331332 Repo . transaction ( fn ->
@@ -369,6 +370,6 @@ defmodule ErrorTracker do
369370 # Send telemetry for new occurrences if not muted
370371 if ! muted , do: Telemetry . new_occurrence ( occurrence )
371372
372- { error , occurrence }
373+ % Occurrence { occurrence | error: error }
373374 end
374375end
0 commit comments