Skip to content

Commit 53cb5cf

Browse files
committed
remove baggage propagation from xray propagator
1 parent afaa132 commit 53cb5cf

File tree

2 files changed

+13
-165
lines changed

2 files changed

+13
-165
lines changed

aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/AwsXrayPropagator.java

+13-59
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55

66
package io.opentelemetry.contrib.awsxray.propagator;
77

8-
import io.opentelemetry.api.baggage.Baggage;
9-
import io.opentelemetry.api.baggage.BaggageBuilder;
10-
import io.opentelemetry.api.baggage.BaggageEntry;
118
import io.opentelemetry.api.internal.StringUtils;
129
import io.opentelemetry.api.trace.Span;
1310
import io.opentelemetry.api.trace.SpanContext;
@@ -21,7 +18,6 @@
2118
import io.opentelemetry.context.propagation.TextMapSetter;
2219
import java.util.Collections;
2320
import java.util.List;
24-
import java.util.function.BiConsumer;
2521
import java.util.logging.Logger;
2622
import javax.annotation.Nullable;
2723

@@ -112,49 +108,19 @@ public <C> void inject(Context context, @Nullable C carrier, TextMapSetter<C> se
112108
char samplingFlag = spanContext.isSampled() ? IS_SAMPLED : NOT_SAMPLED;
113109
// TODO: Add OT trace state to the X-Ray trace header
114110

115-
StringBuilder traceHeader = new StringBuilder();
116-
traceHeader
117-
.append(TRACE_ID_KEY)
118-
.append(KV_DELIMITER)
119-
.append(xrayTraceId)
120-
.append(TRACE_HEADER_DELIMITER)
121-
.append(PARENT_ID_KEY)
122-
.append(KV_DELIMITER)
123-
.append(parentId)
124-
.append(TRACE_HEADER_DELIMITER)
125-
.append(SAMPLED_FLAG_KEY)
126-
.append(KV_DELIMITER)
127-
.append(samplingFlag);
128-
129-
Baggage baggage = Baggage.fromContext(context);
130-
// Truncate baggage to 256 chars per X-Ray spec.
131-
baggage.forEach(
132-
new BiConsumer<String, BaggageEntry>() {
133-
134-
private int baggageWrittenBytes;
135-
136-
@Override
137-
public void accept(String key, BaggageEntry entry) {
138-
if (key.equals(TRACE_ID_KEY)
139-
|| key.equals(PARENT_ID_KEY)
140-
|| key.equals(SAMPLED_FLAG_KEY)) {
141-
return;
142-
}
143-
// Size is key/value pair, excludes delimiter.
144-
int size = key.length() + entry.getValue().length() + 1;
145-
if (baggageWrittenBytes + size > 256) {
146-
return;
147-
}
148-
traceHeader
149-
.append(TRACE_HEADER_DELIMITER)
150-
.append(key)
151-
.append(KV_DELIMITER)
152-
.append(entry.getValue());
153-
baggageWrittenBytes += size;
154-
}
155-
});
156-
157-
setter.set(carrier, TRACE_HEADER_KEY, traceHeader.toString());
111+
String traceHeader = TRACE_ID_KEY +
112+
KV_DELIMITER +
113+
xrayTraceId +
114+
TRACE_HEADER_DELIMITER +
115+
PARENT_ID_KEY +
116+
KV_DELIMITER +
117+
parentId +
118+
TRACE_HEADER_DELIMITER +
119+
SAMPLED_FLAG_KEY +
120+
KV_DELIMITER +
121+
samplingFlag;
122+
123+
setter.set(carrier, TRACE_HEADER_KEY, traceHeader);
158124
}
159125

160126
@Override
@@ -180,9 +146,6 @@ private static <C> Context getContextFromHeader(
180146
String spanId = SpanId.getInvalid();
181147
Boolean isSampled = false;
182148

183-
BaggageBuilder baggage = null;
184-
int baggageReadBytes = 0;
185-
186149
int pos = 0;
187150
while (pos < traceHeader.length()) {
188151
int delimiterIndex = traceHeader.indexOf(TRACE_HEADER_DELIMITER, pos);
@@ -210,12 +173,6 @@ private static <C> Context getContextFromHeader(
210173
spanId = parseSpanId(value);
211174
} else if (trimmedPart.startsWith(SAMPLED_FLAG_KEY)) {
212175
isSampled = parseTraceFlag(value);
213-
} else if (baggageReadBytes + trimmedPart.length() <= 256) {
214-
if (baggage == null) {
215-
baggage = Baggage.builder();
216-
}
217-
baggage.put(trimmedPart.substring(0, equalsIndex), value);
218-
baggageReadBytes += trimmedPart.length();
219176
}
220177
}
221178
if (isSampled == null) {
@@ -241,9 +198,6 @@ private static <C> Context getContextFromHeader(
241198
if (spanContext.isValid()) {
242199
context = context.with(Span.wrap(spanContext));
243200
}
244-
if (baggage != null) {
245-
context = context.with(baggage.build());
246-
}
247201
return context;
248202
}
249203

aws-xray-propagator/src/test/java/io/opentelemetry/contrib/awsxray/propagator/AwsXrayPropagatorTest.java

-106
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import static io.opentelemetry.contrib.awsxray.propagator.AwsXrayPropagator.TRACE_HEADER_KEY;
99
import static org.assertj.core.api.Assertions.assertThat;
1010

11-
import io.opentelemetry.api.baggage.Baggage;
1211
import io.opentelemetry.api.trace.Span;
1312
import io.opentelemetry.api.trace.SpanContext;
1413
import io.opentelemetry.api.trace.TraceFlags;
@@ -20,8 +19,6 @@
2019
import java.util.LinkedHashMap;
2120
import java.util.Map;
2221
import java.util.Set;
23-
import java.util.stream.Collectors;
24-
import java.util.stream.Stream;
2522
import javax.annotation.Nullable;
2623
import org.junit.jupiter.api.Test;
2724

@@ -78,63 +75,6 @@ void inject_NotSampledContext() {
7875
"Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=0");
7976
}
8077

81-
@Test
82-
void inject_WithBaggage() {
83-
Map<String, String> carrier = new LinkedHashMap<>();
84-
xrayPropagator.inject(
85-
withSpanContext(
86-
SpanContext.create(
87-
TRACE_ID, SPAN_ID, TraceFlags.getDefault(), TraceState.getDefault()),
88-
Context.current())
89-
.with(
90-
Baggage.builder()
91-
.put("cat", "meow")
92-
.put("dog", "bark")
93-
.put("Root", "ignored")
94-
.put("Parent", "ignored")
95-
.put("Sampled", "ignored")
96-
.build()),
97-
carrier,
98-
setter);
99-
100-
assertThat(carrier)
101-
.containsEntry(
102-
TRACE_HEADER_KEY,
103-
"Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=0;"
104-
+ "cat=meow;dog=bark");
105-
}
106-
107-
@Test
108-
void inject_WithBaggage_LimitTruncates() {
109-
Map<String, String> carrier = new LinkedHashMap<>();
110-
// Limit is 256 characters for all baggage. We add a 254-character key/value pair and a
111-
// 3 character key value pair.
112-
String key1 = Stream.generate(() -> "a").limit(252).collect(Collectors.joining());
113-
String value1 = "a"; // 252 + 1 (=) + 1 = 254
114-
115-
String key2 = "b";
116-
String value2 = "b"; // 1 + 1 (=) + 1 = 3
117-
118-
Baggage baggage = Baggage.builder().put(key1, value1).put(key2, value2).build();
119-
120-
xrayPropagator.inject(
121-
withSpanContext(
122-
SpanContext.create(
123-
TRACE_ID, SPAN_ID, TraceFlags.getDefault(), TraceState.getDefault()),
124-
Context.current())
125-
.with(baggage),
126-
carrier,
127-
setter);
128-
129-
assertThat(carrier)
130-
.containsEntry(
131-
TRACE_HEADER_KEY,
132-
"Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=0;"
133-
+ key1
134-
+ '='
135-
+ value1);
136-
}
137-
13878
@Test
13979
void inject_WithTraceState() {
14080
Map<String, String> carrier = new LinkedHashMap<>();
@@ -223,52 +163,6 @@ void extract_DifferentPartOrder() {
223163
TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()));
224164
}
225165

226-
@Test
227-
void extract_AdditionalFields() {
228-
Map<String, String> carrier = new LinkedHashMap<>();
229-
carrier.put(
230-
TRACE_HEADER_KEY,
231-
"Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Foo=Bar");
232-
233-
Context context = xrayPropagator.extract(Context.current(), carrier, getter);
234-
assertThat(getSpanContext(context))
235-
.isEqualTo(
236-
SpanContext.createFromRemoteParent(
237-
TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()));
238-
assertThat(Baggage.fromContext(context).getEntryValue("Foo")).isEqualTo("Bar");
239-
}
240-
241-
@Test
242-
void extract_Baggage_LimitTruncates() {
243-
// Limit is 256 characters for all baggage. We add a 254-character key/value pair and a
244-
// 3 character key value pair.
245-
String key1 = Stream.generate(() -> "a").limit(252).collect(Collectors.joining());
246-
String value1 = "a"; // 252 + 1 (=) + 1 = 254
247-
248-
String key2 = "b";
249-
String value2 = "b"; // 1 + 1 (=) + 1 = 3
250-
251-
Map<String, String> carrier = new LinkedHashMap<>();
252-
carrier.put(
253-
TRACE_HEADER_KEY,
254-
"Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;"
255-
+ key1
256-
+ '='
257-
+ value1
258-
+ ';'
259-
+ key2
260-
+ '='
261-
+ value2);
262-
263-
Context context = xrayPropagator.extract(Context.current(), carrier, getter);
264-
assertThat(getSpanContext(context))
265-
.isEqualTo(
266-
SpanContext.createFromRemoteParent(
267-
TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()));
268-
assertThat(Baggage.fromContext(context).getEntryValue(key1)).isEqualTo(value1);
269-
assertThat(Baggage.fromContext(context).getEntryValue(key2)).isNull();
270-
}
271-
272166
@Test
273167
void extract_EmptyHeaderValue() {
274168
Map<String, String> invalidHeaders = new LinkedHashMap<>();

0 commit comments

Comments
 (0)