From bc7b875c5f749732a2f61bc46b430b0010a47aaf Mon Sep 17 00:00:00 2001 From: Arjun Rajappa Date: Wed, 29 Oct 2025 11:43:08 +0530 Subject: [PATCH 1/4] feat: adapt to w3c trace context level 2 Signed-off-by: Arjun Rajappa --- lib/instana/trace/span_context.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 711534747c220142c1dd2b457d7e7a6de588b8ec Mon Sep 17 00:00:00 2001 From: Arjun Rajappa Date: Wed, 29 Oct 2025 17:28:51 +0530 Subject: [PATCH 2/4] feat: flag bits will always be 0010 as this sensor always generates traces randomly Signed-off-by: Arjun Rajappa --- test/trace/span_context_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/trace/span_context_test.rb b/test/trace/span_context_test.rb index f275f5e3..a901ceff 100644 --- a/test/trace/span_context_test.rb +++ b/test/trace/span_context_test.rb @@ -16,7 +16,7 @@ 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 end From fda8bae8983dcc5908264bfe11e5511ccfdf8d62 Mon Sep 17 00:00:00 2001 From: Arjun Rajappa Date: Wed, 29 Oct 2025 21:45:54 +0530 Subject: [PATCH 3/4] test: add tests for trace context level 1 and random flag Signed-off-by: Arjun Rajappa --- test/trace/span_context_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/trace/span_context_test.rb b/test/trace/span_context_test.rb index a901ceff..129a332b 100644 --- a/test/trace/span_context_test.rb +++ b/test/trace/span_context_test.rb @@ -19,4 +19,10 @@ def test_flags_level_zero 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 From 913e7e800de2db57d2e04d164ec2afe3508a3eef Mon Sep 17 00:00:00 2001 From: Arjun Rajappa Date: Thu, 30 Oct 2025 10:13:42 +0530 Subject: [PATCH 4/4] test: fix tests for trace flags Signed-off-by: Arjun Rajappa --- test/instrumentation/rack_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)