Skip to content

Commit 84a17ed

Browse files
committed
Normalize carrier keys in get such all results of keys() return values in get
1 parent ff9c5bd commit 84a17ed

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

api/incubator/src/main/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,14 @@ public String get(@Nullable Map<String, String> carrier, String key) {
8383
return null;
8484
}
8585
String normalizedKey = EnvironmentSetter.normalizeKey(key);
86-
return carrier.get(normalizedKey);
86+
String[] result = new String[] {null};
87+
carrier.forEach(
88+
(entryKey, entryValue) -> {
89+
if (EnvironmentSetter.normalizeKey(entryKey).equals(normalizedKey)) {
90+
result[0] = entryValue;
91+
}
92+
});
93+
return result[0];
8794
}
8895

8996
@Override

api/incubator/src/test/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetterTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void get() {
3838
void get_normalization() {
3939
Map<String, String> carrier = new HashMap<>();
4040
carrier.put("OTEL_TRACE_ID", "val1");
41-
carrier.put("OTEL_BAGGAGE_KEY", "val2");
41+
carrier.put("otel-baggage-key", "val2");
4242

4343
assertThat(EnvironmentGetter.getInstance().get(carrier, "otel.trace.id")).isEqualTo("val1");
4444
assertThat(EnvironmentGetter.getInstance().get(carrier, "otel-baggage-key")).isEqualTo("val2");
@@ -65,6 +65,19 @@ void keys_valuesAreNormalized() {
6565
logCapturer.assertContains("keys() called on EnvironmentGetter");
6666
}
6767

68+
@Test
69+
void getReturnsAllForAllKeys() {
70+
// For a carrier containing keys that are both normalized and not normalized, verify all results
71+
// from keys() return values for get.
72+
Map<String, String> carrier = new HashMap<>();
73+
carrier.put("otel.trace.id", "V1");
74+
carrier.put("OTEL_BAGGAGE_KEY", "V2");
75+
76+
for (String key : EnvironmentGetter.getInstance().keys(carrier)) {
77+
assertThat(EnvironmentGetter.getInstance().get(carrier, key)).isNotNull();
78+
}
79+
}
80+
6881
@Test
6982
void get_valuesAreUnmodified() {
7083
Map<String, String> carrier = new HashMap<>();

0 commit comments

Comments
 (0)