diff --git a/lib/instana/trace/span_context.rb b/lib/instana/trace/span_context.rb index b1032f60..00e96c40 100644 --- a/lib/instana/trace/span_context.rb +++ b/lib/instana/trace/span_context.rb @@ -42,7 +42,7 @@ def span_id_header def trace_parent_header trace = (@baggage[:external_trace_id] || trace_id_header).rjust(32, '0') parent = span_id_header.rjust(16, '0') - flags = @level == 1 ? "01" : "00" + flags = @level == 1 ? "03" : "02" "00-#{trace}-#{parent}-#{flags}" end diff --git a/test/instrumentation/rack_test.rb b/test/instrumentation/rack_test.rb index 42bd6023..adc68fd2 100644 --- a/test/instrumentation/rack_test.rb +++ b/test/instrumentation/rack_test.rb @@ -81,7 +81,7 @@ def test_basic_get assert last_response.headers["Server-Timing"] == "intid;desc=#{::Instana::Util.id_to_header(rack_span[:t])}" # W3C Trace Context - assert_equal "00-#{rack_span[:t].rjust(32, '0')}-#{rack_span[:s]}-01", last_response.headers["Traceparent"] + assert_equal "00-#{rack_span[:t].rjust(32, '0')}-#{rack_span[:s]}-03", last_response.headers["Traceparent"] assert_equal "in=#{rack_span[:t]};#{rack_span[:s]}", last_response.headers["Tracestate"] assert rack_span.key?(:data) diff --git a/test/trace/span_context_test.rb b/test/trace/span_context_test.rb index f275f5e3..129a332b 100644 --- a/test/trace/span_context_test.rb +++ b/test/trace/span_context_test.rb @@ -16,7 +16,13 @@ def test_invalid def test_flags_level_zero subject = Instana::SpanContext.new(trace_id: 'trace', span_id: 'span', level: 0, baggage: {external_state: 'cn=test'}) - assert_equal '00-000000000000000000000000000trace-000000000000span-00', subject.trace_parent_header + assert_equal '00-000000000000000000000000000trace-000000000000span-02', subject.trace_parent_header assert_equal 'cn=test', subject.trace_state_header end + + def test_flags_level_zero_with_random_flag + subject = Instana::SpanContext.new(trace_id: 'trace', span_id: 'span', level: 1, baggage: {external_state: 'cn=test'}) + assert_equal '00-000000000000000000000000000trace-000000000000span-03', subject.trace_parent_header + assert_equal 'in=trace;span,cn=test', subject.trace_state_header + end end