Skip to content

Commit e7f0342

Browse files
committed
Fix non-lowercase messaging headers
1 parent c7dd764 commit e7f0342

File tree

21 files changed

+59
-68
lines changed

21 files changed

+59
-68
lines changed

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/CapturedMessageHeadersUtil.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,21 @@
55

66
package io.opentelemetry.instrumentation.api.incubator.semconv.messaging;
77

8-
import static java.util.Collections.unmodifiableList;
9-
108
import io.opentelemetry.api.common.AttributeKey;
119
import java.util.List;
12-
import java.util.Locale;
1310
import java.util.concurrent.ConcurrentHashMap;
1411
import java.util.concurrent.ConcurrentMap;
15-
import java.util.stream.Collectors;
1612

1713
final class CapturedMessageHeadersUtil {
1814

1915
private static final ConcurrentMap<String, AttributeKey<List<String>>> attributeKeysCache =
2016
new ConcurrentHashMap<>();
2117

22-
static List<String> lowercase(List<String> names) {
23-
return unmodifiableList(
24-
names.stream().map(s -> s.toLowerCase(Locale.ROOT)).collect(Collectors.toList()));
25-
}
26-
2718
static AttributeKey<List<String>> attributeKey(String headerName) {
2819
return attributeKeysCache.computeIfAbsent(headerName, n -> createKey(n));
2920
}
3021

3122
private static AttributeKey<List<String>> createKey(String headerName) {
32-
// headerName is always lowercase, see MessagingAttributesExtractor
3323
String key = "messaging.header." + headerName.replace('-', '_');
3424
return AttributeKey.stringArrayKey(key);
3525
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1414
import io.opentelemetry.instrumentation.api.internal.SpanKey;
1515
import io.opentelemetry.instrumentation.api.internal.SpanKeyProvider;
16+
import java.util.ArrayList;
1617
import java.util.List;
1718
import javax.annotation.Nullable;
1819

@@ -85,7 +86,7 @@ public static <REQUEST, RESPONSE> MessagingAttributesExtractorBuilder<REQUEST, R
8586
List<String> capturedHeaders) {
8687
this.getter = getter;
8788
this.operation = operation;
88-
this.capturedHeaders = CapturedMessageHeadersUtil.lowercase(capturedHeaders);
89+
this.capturedHeaders = new ArrayList<>(capturedHeaders);
8990
}
9091

9192
@Override

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractorBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public final class MessagingAttributesExtractorBuilder<REQUEST, RESPONSE> {
3030
* Configures the messaging headers that will be captured as span attributes.
3131
*
3232
* <p>The messaging header values will be captured under the {@code messaging.header.<name>}
33-
* attribute key. The {@code <name>} part in the attribute key is the normalized header name:
34-
* lowercase, with dashes replaced by underscores.
33+
* attribute key. The {@code <name>} part in the attribute key is the header name with dashes
34+
* replaced by underscores.
3535
*
3636
* @param capturedHeaders A list of messaging header names.
3737
*/

instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,15 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead
106106

107107
if (testCaptureHeaders) {
108108
sendMessageRequest.addMessageAttributesEntry(
109-
"test-message-header",
109+
"Test_Message_Header",
110110
new MessageAttributeValue().withDataType("String").withStringValue("test"));
111111
}
112112
sqsClient.sendMessage(sendMessageRequest);
113113

114114
ReceiveMessageRequest receiveMessageRequest =
115115
new ReceiveMessageRequest("http://localhost:" + sqsPort + "/000000000000/testSdkSqs");
116116
if (testCaptureHeaders) {
117-
receiveMessageRequest.withMessageAttributeNames("test-message-header");
117+
receiveMessageRequest.withMessageAttributeNames("Test_Message_Header");
118118
}
119119
ReceiveMessageResult receiveMessageResult = sqsClient.receiveMessage(receiveMessageRequest);
120120

@@ -182,7 +182,7 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead
182182
if (testCaptureHeaders) {
183183
attributes.add(
184184
satisfies(
185-
stringArrayKey("messaging.header.test_message_header"),
185+
stringArrayKey("messaging.header.Test_Message_Header"),
186186
val -> val.isEqualTo(singletonList("test"))));
187187
}
188188

@@ -222,7 +222,7 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead
222222
if (testCaptureHeaders) {
223223
attributes.add(
224224
satisfies(
225-
stringArrayKey("messaging.header.test_message_header"),
225+
stringArrayKey("messaging.header.Test_Message_Header"),
226226
val -> val.isEqualTo(singletonList("test"))));
227227
}
228228

@@ -261,7 +261,7 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead
261261
if (testCaptureHeaders) {
262262
attributes.add(
263263
satisfies(
264-
stringArrayKey("messaging.header.test_message_header"),
264+
stringArrayKey("messaging.header.Test_Message_Header"),
265265
val -> val.isEqualTo(singletonList("test"))));
266266
}
267267
span.hasName("testSdkSqs process")

instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ protected void assertSqsTraces(boolean withParent, boolean captureHeaders) {
9393
if (captureHeaders) {
9494
attributes.add(
9595
satisfies(
96-
stringArrayKey("messaging.header.test_message_header"),
96+
stringArrayKey("messaging.header.Test_Message_Header"),
9797
v -> v.isEqualTo(ImmutableList.of("test"))));
9898
}
9999
span.hasName("testSdkSqs publish")
@@ -163,7 +163,7 @@ protected void assertSqsTraces(boolean withParent, boolean captureHeaders) {
163163
if (captureHeaders) {
164164
attributes.add(
165165
satisfies(
166-
stringArrayKey("messaging.header.test_message_header"),
166+
stringArrayKey("messaging.header.Test_Message_Header"),
167167
v -> v.isEqualTo(ImmutableList.of("test"))));
168168
}
169169

@@ -201,7 +201,7 @@ protected void assertSqsTraces(boolean withParent, boolean captureHeaders) {
201201
if (captureHeaders) {
202202
attributes.add(
203203
satisfies(
204-
stringArrayKey("messaging.header.test_message_header"),
204+
stringArrayKey("messaging.header.Test_Message_Header"),
205205
v -> v.isEqualTo(singletonList("test"))));
206206
}
207207

@@ -238,13 +238,13 @@ void testCaptureMessageHeaderAsAttributeSpan() throws URISyntaxException {
238238
sendMessageRequest.toBuilder()
239239
.messageAttributes(
240240
Collections.singletonMap(
241-
"test-message-header",
241+
"Test-Message-Header",
242242
MessageAttributeValue.builder().dataType("String").stringValue("test").build()))
243243
.build();
244244
client.sendMessage(newSendMessageRequest);
245245

246246
ReceiveMessageRequest newReceiveMessageRequest =
247-
receiveMessageRequest.toBuilder().messageAttributeNames("test-message-header").build();
247+
receiveMessageRequest.toBuilder().messageAttributeNames("Test-Message-Header").build();
248248
ReceiveMessageResponse response = client.receiveMessage(newReceiveMessageRequest);
249249

250250
assertThat(response.messages().size()).isEqualTo(1);

instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/AbstractJms1Test.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ void shouldCaptureMessageHeaders(
177177
// given
178178
Destination destination = destinationFactory.create(session);
179179
TextMessage sentMessage = session.createTextMessage("a message");
180-
sentMessage.setStringProperty("test_message_header", "test");
181-
sentMessage.setIntProperty("test_message_int_header", 1234);
180+
sentMessage.setStringProperty("Test_Message_Header", "test");
181+
sentMessage.setIntProperty("Test_Message_Int_Header", 1234);
182182

183183
MessageProducer producer = session.createProducer(destination);
184184
cleanup.deferCleanup(producer::close);
@@ -215,10 +215,10 @@ void shouldCaptureMessageHeaders(
215215
equalTo(MESSAGING_MESSAGE_ID, messageId),
216216
messagingTempDestination(isTemporary),
217217
equalTo(
218-
stringArrayKey("messaging.header.test_message_header"),
218+
stringArrayKey("messaging.header.Test_Message_Header"),
219219
singletonList("test")),
220220
equalTo(
221-
stringArrayKey("messaging.header.test_message_int_header"),
221+
stringArrayKey("messaging.header.Test_Message_Int_Header"),
222222
singletonList("1234"))),
223223
span ->
224224
span.hasName(destinationName + " process")
@@ -231,10 +231,10 @@ void shouldCaptureMessageHeaders(
231231
equalTo(MESSAGING_MESSAGE_ID, messageId),
232232
messagingTempDestination(isTemporary),
233233
equalTo(
234-
stringArrayKey("messaging.header.test_message_header"),
234+
stringArrayKey("messaging.header.Test_Message_Header"),
235235
singletonList("test")),
236236
equalTo(
237-
stringArrayKey("messaging.header.test_message_int_header"),
237+
stringArrayKey("messaging.header.Test_Message_Int_Header"),
238238
singletonList("1234"))),
239239
span -> span.hasName("consumer").hasParent(trace.getSpan(2))));
240240
}

instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/AbstractJms3Test.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ void shouldCaptureMessageHeaders(DestinationFactory destinationFactory, boolean
191191
// given
192192
Destination destination = destinationFactory.create(session);
193193
TextMessage sentMessage = session.createTextMessage("hello there");
194-
sentMessage.setStringProperty("test_message_header", "test");
195-
sentMessage.setIntProperty("test_message_int_header", 1234);
194+
sentMessage.setStringProperty("Test_Message_Header", "test");
195+
sentMessage.setIntProperty("Test_Message_Int_Header", 1234);
196196

197197
MessageProducer producer = session.createProducer(destination);
198198
cleanup.deferCleanup(producer);
@@ -232,10 +232,10 @@ void shouldCaptureMessageHeaders(DestinationFactory destinationFactory, boolean
232232
equalTo(MESSAGING_MESSAGE_ID, messageId),
233233
messagingTempDestination(isTemporary),
234234
equalTo(
235-
stringArrayKey("messaging.header.test_message_header"),
235+
stringArrayKey("messaging.header.Test_Message_Header"),
236236
singletonList("test")),
237237
equalTo(
238-
stringArrayKey("messaging.header.test_message_int_header"),
238+
stringArrayKey("messaging.header.Test_Message_Int_Header"),
239239
singletonList("1234"))),
240240
span ->
241241
span.hasName(actualDestinationName + " process")
@@ -247,10 +247,10 @@ void shouldCaptureMessageHeaders(DestinationFactory destinationFactory, boolean
247247
equalTo(MESSAGING_OPERATION, "process"),
248248
equalTo(MESSAGING_MESSAGE_ID, messageId),
249249
equalTo(
250-
stringArrayKey("messaging.header.test_message_header"),
250+
stringArrayKey("messaging.header.Test_Message_Header"),
251251
singletonList("test")),
252252
equalTo(
253-
stringArrayKey("messaging.header.test_message_int_header"),
253+
stringArrayKey("messaging.header.Test_Message_Int_Header"),
254254
singletonList("1234"))),
255255
span -> span.hasName("consumer").hasParent(trace.getSpan(2))));
256256
}

instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/KafkaClientDefaultTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void testKafkaProducerAndConsumerSpan(boolean testHeaders) throws Exception {
4949
if (testHeaders) {
5050
producerRecord
5151
.headers()
52-
.add("test-message-header", "test".getBytes(StandardCharsets.UTF_8));
52+
.add("Test-Message-Header", "test".getBytes(StandardCharsets.UTF_8));
5353
}
5454
producer
5555
.send(
@@ -214,7 +214,7 @@ void testKafkaHeaderNull() throws Exception {
214214
() -> {
215215
ProducerRecord<Integer, String> producerRecord =
216216
new ProducerRecord<>(SHARED_TOPIC, 10, greeting);
217-
producerRecord.headers().add("test-message-header", null);
217+
producerRecord.headers().add("Test-Message-Header", null);
218218
producer
219219
.send(
220220
producerRecord,
@@ -238,7 +238,7 @@ void testKafkaHeaderNull() throws Exception {
238238
() -> {
239239
assertThat(record.key()).isEqualTo(10);
240240
assertThat(record.value()).isEqualTo(greeting);
241-
assertThat(record.headers().lastHeader("test-message-header").value()).isNull();
241+
assertThat(record.headers().lastHeader("Test-Message-Header").value()).isNull();
242242
});
243243
}
244244
AtomicReference<SpanData> producerSpan = new AtomicReference<>();

instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/io/opentelemetry/instrumentation/kafkaclients/common/v0_11/internal/KafkaClientBaseTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ protected static List<AttributeAssertion> sendAttributes(
188188
if (testHeaders) {
189189
assertions.add(
190190
equalTo(
191-
AttributeKey.stringArrayKey("messaging.header.test_message_header"),
191+
AttributeKey.stringArrayKey("messaging.header.Test_Message_Header"),
192192
Collections.singletonList("test")));
193193
}
194194
return assertions;
@@ -211,7 +211,7 @@ protected static List<AttributeAssertion> receiveAttributes(boolean testHeaders)
211211
if (testHeaders) {
212212
assertions.add(
213213
equalTo(
214-
AttributeKey.stringArrayKey("messaging.header.test_message_header"),
214+
AttributeKey.stringArrayKey("messaging.header.Test_Message_Header"),
215215
Collections.singletonList("test")));
216216
}
217217
return assertions;
@@ -249,7 +249,7 @@ protected static List<AttributeAssertion> processAttributes(
249249
if (testHeaders) {
250250
assertions.add(
251251
equalTo(
252-
AttributeKey.stringArrayKey("messaging.header.test_message_header"),
252+
AttributeKey.stringArrayKey("messaging.header.Test_Message_Header"),
253253
Collections.singletonList("test")));
254254
}
255255

instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/AbstractWrapperTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ abstract class AbstractWrapperTest extends KafkaClientBaseTest {
3434
void testWrappers(boolean testHeaders) throws InterruptedException {
3535
KafkaTelemetryBuilder telemetryBuilder =
3636
KafkaTelemetry.builder(testing.getOpenTelemetry())
37-
.setCapturedHeaders(singletonList("test-message-header"))
37+
.setCapturedHeaders(singletonList("Test-Message-Header"))
3838
// TODO run tests both with and without experimental span attributes
3939
.setCaptureExperimentalSpanAttributes(true);
4040
configure(telemetryBuilder);
@@ -50,7 +50,7 @@ void testWrappers(boolean testHeaders) throws InterruptedException {
5050
if (testHeaders) {
5151
producerRecord
5252
.headers()
53-
.add("test-message-header", "test".getBytes(StandardCharsets.UTF_8));
53+
.add("Test-Message-Header", "test".getBytes(StandardCharsets.UTF_8));
5454
}
5555
wrappedProducer.send(
5656
producerRecord,

0 commit comments

Comments
 (0)