Skip to content

Commit 586522c

Browse files
authored
Make the trace flags optional when parsing x-cloud-trace-context (#181)
Fixes #167
1 parent 224afa1 commit 586522c

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

opentelemetry-propagator-gcp/src/opentelemetry/propagators/cloud_trace_propagator/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from opentelemetry.trace.span import SpanContext, TraceFlags, format_trace_id
2323

2424
_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+))?"
2626
_TRACE_CONTEXT_HEADER_RE = re.compile(_TRACE_CONTEXT_HEADER_FORMAT)
2727
_FIELDS = {_TRACE_CONTEXT_HEADER_NAME}
2828

@@ -71,7 +71,7 @@ def extract(
7171

7272
trace_id = match.group("trace_id")
7373
span_id = match.group("span_id")
74-
trace_options = match.group("trace_flags")
74+
trace_options = match.group("trace_flags") or "0"
7575

7676
if trace_id == "0" * 32 or int(span_id) == 0:
7777
return context

opentelemetry-propagator-gcp/tests/test_cloud_trace_propagator.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ def test_valid_header(self):
115115
self.assertEqual(new_span_context.trace_flags, TraceFlags(0))
116116
self.assertTrue(new_span_context.is_remote)
117117

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+
118125
def test_mixed_case_header_key(self):
119126
header_value = "{}/{};o=1".format(
120127
format_trace_id(self.valid_trace_id), self.valid_span_id

0 commit comments

Comments
 (0)