Skip to content

Commit 81f43b2

Browse files
committed
Move casting of span ids to the SpanRecord struct
1 parent 0aba7d5 commit 81f43b2

File tree

2 files changed

+25
-30
lines changed

2 files changed

+25
-30
lines changed

lib/sentry/opentelemetry/span_processor.ex

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
3030
|> Keyword.delete(:attributes)
3131
|> Keyword.merge(
3232
trace_id: cast_trace_id(otel_attrs[:trace_id]),
33+
span_id: cast_span_id(otel_attrs[:span_id]),
34+
parent_span_id: cast_span_id(otel_attrs[:parent_span_id]),
3335
origin: origin,
3436
attributes: attributes
3537
)
@@ -38,6 +40,10 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
3840
struct(__MODULE__, attrs)
3941
end
4042

43+
defp cast_span_id(nil), do: nil
44+
defp cast_span_id(:undefined), do: nil
45+
defp cast_span_id(span_id), do: bytes_to_hex(span_id, 16)
46+
4147
defp cast_trace_id(trace_id), do: bytes_to_hex(trace_id, 32)
4248

4349
defp bytes_to_hex(bytes, length) do
@@ -63,7 +69,7 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
6369

6470
SpanStorage.update_span(span_record)
6571

66-
if span_record.parent_span_id == :undefined do
72+
if span_record.parent_span_id == nil do
6773
root_span = SpanStorage.get_root_span(span_record.span_id)
6874
child_spans = SpanStorage.get_child_spans(span_record.span_id)
6975

@@ -91,7 +97,7 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
9197
contexts: %{
9298
trace: %{
9399
trace_id: root_span.trace_id,
94-
span_id: cast_span_id(root_span.span_id),
100+
span_id: root_span.span_id,
95101
op: root_span.name
96102
}
97103
},
@@ -113,8 +119,8 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
113119
contexts: %{
114120
trace: %{
115121
trace_id: root_span.trace_id,
116-
span_id: cast_span_id(root_span.span_id),
117-
parent_span_id: cast_span_id(root_span.parent_span_id),
122+
span_id: root_span.span_id,
123+
parent_span_id: root_span.parent_span_id,
118124
op: "db",
119125
origin: root_span.origin
120126
}
@@ -203,8 +209,8 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
203209
contexts: %{
204210
trace: %{
205211
trace_id: root_span.trace_id,
206-
span_id: cast_span_id(root_span.span_id),
207-
parent_span_id: cast_span_id(root_span.parent_span_id)
212+
span_id: root_span.span_id,
213+
parent_span_id: root_span.parent_span_id
208214
}
209215
},
210216
platform: "elixir",
@@ -231,7 +237,7 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
231237
defp build_trace_context(%SpanRecord{origin: origin, attributes: attributes} = root_span) do
232238
%{
233239
trace_id: root_span.trace_id,
234-
span_id: cast_span_id(root_span.span_id),
240+
span_id: root_span.span_id,
235241
parent_span_id: nil,
236242
op: "http.server",
237243
origin: origin,
@@ -252,8 +258,8 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
252258
start_timestamp: cast_timestamp(span_record.start_time),
253259
timestamp: cast_timestamp(span_record.end_time),
254260
trace_id: trace_id,
255-
span_id: cast_span_id(span_record.span_id),
256-
parent_span_id: cast_span_id(span_record.parent_span_id),
261+
span_id: span_record.span_id,
262+
parent_span_id: span_record.parent_span_id,
257263
description: attributes[:"http.route"],
258264
origin: span_record.origin
259265
}
@@ -265,8 +271,8 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
265271
op: span_record.name,
266272
start_timestamp: cast_timestamp(span_record.start_time),
267273
timestamp: cast_timestamp(span_record.end_time),
268-
span_id: cast_span_id(span_record.span_id),
269-
parent_span_id: cast_span_id(span_record.parent_span_id)
274+
span_id: span_record.span_id,
275+
parent_span_id: span_record.parent_span_id
270276
}
271277
end
272278

@@ -276,8 +282,8 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
276282
op: span_record.name,
277283
start_timestamp: cast_timestamp(span_record.start_time),
278284
timestamp: cast_timestamp(span_record.end_time),
279-
span_id: cast_span_id(span_record.span_id),
280-
parent_span_id: cast_span_id(span_record.parent_span_id),
285+
span_id: span_record.span_id,
286+
parent_span_id: span_record.parent_span_id,
281287
description: span_record.name,
282288
origin: span_record.origin
283289
}
@@ -292,8 +298,8 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
292298
op: span_record.name,
293299
start_timestamp: cast_timestamp(span_record.start_time),
294300
timestamp: cast_timestamp(span_record.end_time),
295-
span_id: cast_span_id(span_record.span_id),
296-
parent_span_id: cast_span_id(span_record.parent_span_id),
301+
span_id: span_record.span_id,
302+
parent_span_id: span_record.parent_span_id,
297303
origin: span_record.origin,
298304
data: %{
299305
"db.system" => attributes[:"db.system"],
@@ -311,15 +317,11 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
311317
op: span_record.name,
312318
start_timestamp: cast_timestamp(span_record.start_time),
313319
timestamp: cast_timestamp(span_record.end_time),
314-
span_id: cast_span_id(span_record.span_id),
315-
parent_span_id: cast_span_id(span_record.parent_span_id)
320+
span_id: span_record.span_id,
321+
parent_span_id: span_record.parent_span_id
316322
}
317323
end
318324

319-
defp cast_span_id(nil), do: nil
320-
defp cast_span_id(:undefined), do: nil
321-
defp cast_span_id(span_id), do: bytes_to_hex(span_id, 16)
322-
323325
defp cast_timestamp(:undefined), do: nil
324326
defp cast_timestamp(nil), do: nil
325327

@@ -329,11 +331,4 @@ defmodule Sentry.Opentelemetry.SpanProcessor do
329331

330332
DateTime.to_iso8601(datetime)
331333
end
332-
333-
defp bytes_to_hex(bytes, length) do
334-
case(:otel_utils.format_binary_string("~#{length}.16.0b", [bytes])) do
335-
{:ok, result} -> result
336-
{:error, _} -> raise "Failed to convert bytes to hex: #{inspect(bytes)}"
337-
end
338-
end
339334
end

lib/sentry/opentelemetry/span_storage.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ defmodule Sentry.Opentelemetry.SpanStorage do
2626
end
2727

2828
def handle_call({:store_span, span_data}, _from, state) do
29-
if span_data.parent_span_id == :undefined do
29+
if span_data.parent_span_id == nil do
3030
new_state = put_in(state, [:root_spans, span_data.span_id], span_data)
3131
{:reply, :ok, new_state}
3232
else
@@ -48,7 +48,7 @@ defmodule Sentry.Opentelemetry.SpanStorage do
4848
end
4949

5050
def handle_call({:update_span, span_data}, _from, state) do
51-
if span_data.parent_span_id == :undefined do
51+
if span_data.parent_span_id == nil do
5252
new_state = put_in(state, [:root_spans, span_data.span_id], span_data)
5353
{:reply, :ok, new_state}
5454
else

0 commit comments

Comments
 (0)