Skip to content

Commit 7a8dcf4

Browse files
authored
Make the trace flags optional when parsing x-cloud-trace-context (#350)
1 parent f04d7e9 commit 7a8dcf4

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

propagators/gcp/src/main/java/com/google/cloud/opentelemetry/propagators/XCloudTraceContextPropagator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public final class XCloudTraceContextPropagator implements TextMapPropagator {
4242
private static final String FIELD = "x-cloud-trace-context";
4343
private static final Collection<String> FIELDS = Collections.singletonList(FIELD);
4444
private static final Pattern VALUE_PATTERN =
45-
Pattern.compile("(?<traceid>[0-9a-f]{32})\\/(?<spanid>[\\d]{1,20});o=(?<sampled>\\d+)");
45+
Pattern.compile("(?<traceid>[0-9a-f]{32})\\/(?<spanid>[\\d]{1,20})(;o=(?<sampled>\\d+))?");
4646
private static final Logger LOGGER =
4747
Logger.getLogger(XCloudTraceContextPropagator.class.getCanonicalName());
4848

propagators/gcp/src/test/java/com/google/cloud/opentelemetry/propagators/PropagatorTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,22 @@ public void testExtractNotSampled() {
9393
Assert.assertEquals(false, span.getSpanContext().getTraceFlags().isSampled());
9494
}
9595

96+
@Test
97+
public void testExtractWithoutTraceFlags() {
98+
Context context = Context.root();
99+
Map<String, String> carrier = new HashMap<>();
100+
carrier.put("x-cloud-trace-context", "00000000000000000000000000000010/15");
101+
TextMapPropagator propagator = new XCloudTraceContextPropagator(false);
102+
103+
// Now try to extract the value.
104+
Context updated = propagator.extract(context, carrier, GETTER);
105+
Span span = Span.fromContext(updated);
106+
Assert.assertNotNull(span);
107+
Assert.assertEquals("00000000000000000000000000000010", span.getSpanContext().getTraceId());
108+
Assert.assertEquals("000000000000000f", span.getSpanContext().getSpanId());
109+
Assert.assertEquals(false, span.getSpanContext().getTraceFlags().isSampled());
110+
}
111+
96112
@Test
97113
public void testNotInjectOneway() {
98114
Span span =

0 commit comments

Comments
 (0)