Skip to content

Commit f829e51

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

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
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: 8 additions & 2 deletions
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");
@@ -56,9 +56,15 @@ void keys_valuesAreNormalized() {
5656
Map<String, String> carrier = new HashMap<>();
5757
carrier.put("otel.trace.id", "V1");
5858
carrier.put("otel-baggage-key", "V2");
59+
carrier.put("OTEL_FOO", "V2");
5960

61+
// For a carrier containing keys that are both normalized and not normalized, verify all results
62+
// from keys() return values for get.
6063
assertThat(EnvironmentGetter.getInstance().keys(carrier))
61-
.containsExactlyInAnyOrder("OTEL_TRACE_ID", "OTEL_BAGGAGE_KEY");
64+
.containsExactlyInAnyOrder("OTEL_TRACE_ID", "OTEL_BAGGAGE_KEY", "OTEL_FOO");
65+
for (String key : EnvironmentGetter.getInstance().keys(carrier)) {
66+
assertThat(EnvironmentGetter.getInstance().get(carrier, key)).isNotNull();
67+
}
6268
assertThat(EnvironmentGetter.getInstance().keys(null)).isEmpty();
6369

6470
assertThat(logCapturer.size()).isEqualTo(1);

0 commit comments

Comments
 (0)