File tree Expand file tree Collapse file tree 2 files changed +9
-2
lines changed
opentelemetry-propagator-gcp
src/opentelemetry/propagators/cloud_trace_propagator Expand file tree Collapse file tree 2 files changed +9
-2
lines changed Original file line number Diff line number Diff line change 22
22
from opentelemetry .trace .span import SpanContext , TraceFlags , format_trace_id
23
23
24
24
_TRACE_CONTEXT_HEADER_NAME = "x-cloud-trace-context"
25
- _TRACE_CONTEXT_HEADER_FORMAT = r"(?P<trace_id>[0-9a-f]{32})\/(?P<span_id>[\d]{1,20});o=(?P<trace_flags>\d+)"
25
+ _TRACE_CONTEXT_HEADER_FORMAT = r"(?P<trace_id>[0-9a-f]{32})\/(?P<span_id>[\d]{1,20})( ;o=(?P<trace_flags>\d+))? "
26
26
_TRACE_CONTEXT_HEADER_RE = re .compile (_TRACE_CONTEXT_HEADER_FORMAT )
27
27
_FIELDS = {_TRACE_CONTEXT_HEADER_NAME }
28
28
@@ -71,7 +71,7 @@ def extract(
71
71
72
72
trace_id = match .group ("trace_id" )
73
73
span_id = match .group ("span_id" )
74
- trace_options = match .group ("trace_flags" )
74
+ trace_options = match .group ("trace_flags" ) or "0"
75
75
76
76
if trace_id == "0" * 32 or int (span_id ) == 0 :
77
77
return context
Original file line number Diff line number Diff line change @@ -115,6 +115,13 @@ def test_valid_header(self):
115
115
self .assertEqual (new_span_context .trace_flags , TraceFlags (0 ))
116
116
self .assertTrue (new_span_context .is_remote )
117
117
118
+ header = "{}/{}" .format (format_trace_id (self .valid_trace_id ), 345 )
119
+ new_span_context = self ._extract_span_context (header )
120
+ self .assertEqual (new_span_context .trace_id , self .valid_trace_id )
121
+ self .assertEqual (new_span_context .span_id , 345 )
122
+ self .assertEqual (new_span_context .trace_flags , TraceFlags (0 ))
123
+ self .assertTrue (new_span_context .is_remote )
124
+
118
125
def test_mixed_case_header_key (self ):
119
126
header_value = "{}/{};o=1" .format (
120
127
format_trace_id (self .valid_trace_id ), self .valid_span_id
You can’t perform that action at this time.
0 commit comments