lib/instana/tracing/span_context.rb in instana-1.197.0.pre1 vs lib/instana/tracing/span_context.rb in instana-1.197.0.pre2
- old
+ new
@@ -29,32 +29,37 @@
def span_id_header
::Instana::Util.id_to_header(@span_id)
end
def trace_parent_header
- return '' unless valid?
-
- trace = (@baggage[:external_trace_id] || @trace_id).rjust(32, '0')
- parent = @span_id.rjust(16, '0')
+ trace = (@baggage[:external_trace_id] || trace_id_header).rjust(32, '0')
+ parent = span_id_header.rjust(16, '0')
flags = @level == 1 ? "01" : "00"
"00-#{trace}-#{parent}-#{flags}"
end
def trace_state_header
- return '' unless valid?
+ external_state = @baggage[:external_state] || ''
+ state = external_state.split(/,/)
- state = ["in=#{trace_id_header};#{span_id_header}", @baggage[:external_state]]
+ if @level == 1
+ state = state.reject { |s| s.start_with?('in=') }
+ state.unshift("in=#{trace_id_header};#{span_id_header}")
+ end
+
state.compact.join(',')
end
def to_hash
{ :trace_id => @trace_id, :span_id => @span_id }
end
- private
-
def valid?
- @baggage && @trace_id && @span_id
+ @baggage && @trace_id && !@trace_id.emtpy?
+ end
+
+ def active?
+ @level == 1
end
end
end