Skip to content

Commit c8dd839

Browse files
Set frames to "nil" when it's an empty list (#775)
Co-authored-by: Andrea Leopardi <[email protected]>
1 parent 108bbe7 commit c8dd839

File tree

5 files changed

+13
-4
lines changed

5 files changed

+13
-4
lines changed

lib/sentry/client.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ defmodule Sentry.Client do
297297
thread
298298
|> Map.from_struct()
299299
|> update_if_present(:stacktrace, fn %Interfaces.Stacktrace{frames: frames} ->
300-
%{frames: Enum.map(frames, &Map.from_struct/1)}
300+
%{frames: frames && Enum.map(frames, &Map.from_struct/1)}
301301
end)
302302
end
303303

lib/sentry/event.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ defmodule Sentry.Event do
481481

482482
defp coerce_stacktrace(stacktrace) when is_list(stacktrace) do
483483
case stacktrace_to_frames(stacktrace) do
484-
[] -> nil
484+
[] -> %Interfaces.Stacktrace{frames: nil}
485485
frames -> %Interfaces.Stacktrace{frames: frames}
486486
end
487487
end

test/logger_backend_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ defmodule Sentry.LoggerBackendTest do
5050
# it's fine. Just make sure that on the latest Elixir/OTP versions it's there.
5151
if System.otp_release() >= "26" do
5252
assert [thread] = event.threads
53-
assert thread.stacktrace == nil
53+
assert thread.stacktrace.frames == nil
5454
end
5555
end
5656

test/sentry/client_test.exs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,15 @@ defmodule Sentry.ClientTest do
8383
:code.delete(RaisingJSONClient)
8484
:code.purge(RaisingJSONClient)
8585
end
86+
87+
test "renders threads with stacktrace :frames field set to nil if empty" do
88+
event =
89+
Event.create_event(message: "No frames in stacktrace", stacktrace: [])
90+
91+
client = Client.render_event(event)
92+
93+
assert %{frames: nil} = get_in(client.threads, [Access.at(0), :stacktrace])
94+
end
8695
end
8796

8897
describe "send_event/2" do

test/sentry/logger_handler_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ defmodule Sentry.LoggerHandlerTest do
223223
if System.otp_release() >= "26" do
224224
assert [] = event.exception
225225
assert [thread] = event.threads
226-
assert thread.stacktrace == nil
226+
assert thread.stacktrace.frames == nil
227227
assert event.extra.genserver_state == ":no_state"
228228
assert event.extra.last_message =~ ~r/^\{:run, .*/
229229
assert event.extra.pid_which_sent_last_message == inspect(self())

0 commit comments

Comments
 (0)