Skip to content
This repository was archived by the owner on Jul 31, 2023. It is now read-only.

Commit 33de39d

Browse files
committed
alternative way of encoding traceid by checking size first
1 parent 838b22a commit 33de39d

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

src/oc_propagation_http_b3.erl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,21 @@ to_headers(#span_ctx{trace_id=TraceId,
3939
trace_options=TraceOptions}) ->
4040
Options = case TraceOptions band 1 of 1 -> "1"; _ -> "0" end,
4141
%% iolist_to_binary only needed for versions before otp-21
42-
EncodedTraceId = iolist_to_binary(io_lib:format("~.16b", [TraceId])),
42+
EncodedTraceId = encode_trace_id(TraceId),
4343
EncodedSpanId = iolist_to_binary(io_lib:format("~16.16.0b", [SpanId])),
4444
[{?B3_TRACE_ID, EncodedTraceId},
4545
{?B3_SPAN_ID, EncodedSpanId},
4646
{?B3_SAMPLED, Options}];
4747
to_headers(undefined) ->
4848
[].
4949

50+
encode_trace_id(TraceId) ->
51+
encode_trace_id(TraceId, binary:encode_unsigned(TraceId)).
52+
encode_trace_id(TraceId, TraceIdBin) when bit_size(TraceIdBin) == 64 ->
53+
iolist_to_binary(io_lib:format("~16.16.0b", [TraceId]));
54+
encode_trace_id(TraceId, _TraceIdBin) ->
55+
iolist_to_binary(io_lib:format("~32.16.0b", [TraceId])).
56+
5057
-spec from_headers(list() | map()) -> maybe(opencensus:span_ctx()).
5158
from_headers(Headers) when is_map(Headers) ->
5259
from_headers(maps:to_list(Headers));

0 commit comments

Comments
 (0)