Skip to content

Commit 9a41486

Browse files
lauritopentelemetrybot
authored andcommitted
Implement forEach support for aws sqs tracing list (#10062)
1 parent a36175c commit 9a41486

File tree

4 files changed

+27
-3
lines changed

4 files changed

+27
-3
lines changed

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/TracingList.java

+8
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1414
import java.util.Iterator;
1515
import java.util.List;
16+
import java.util.function.Consumer;
1617

1718
class TracingList extends SdkInternalList<Message> {
1819
private static final long serialVersionUID = 1L;
@@ -57,6 +58,13 @@ public Iterator<Message> iterator() {
5758
return it;
5859
}
5960

61+
@Override
62+
public void forEach(Consumer<? super Message> action) {
63+
for (Message message : this) {
64+
action.accept(message);
65+
}
66+
}
67+
6068
private static boolean inAwsClient() {
6169
for (Class<?> caller : CallerClass.INSTANCE.getClassContext()) {
6270
if (AmazonSQSClient.class == caller) {

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

+9-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,15 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification {
6767
receiveMessageRequest.withMessageAttributeNames("test-message-header")
6868
}
6969
def receiveMessageResult = client.receiveMessage(receiveMessageRequest)
70-
receiveMessageResult.messages.each {message ->
71-
runWithSpan("process child") {}
70+
// test different ways of iterating the messages list
71+
if (testCaptureHeaders) {
72+
receiveMessageResult.messages.each { message ->
73+
runWithSpan("process child") {}
74+
}
75+
} else {
76+
receiveMessageResult.messages.forEach { message ->
77+
runWithSpan("process child") {}
78+
}
7279
}
7380

7481
then:

instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingList.java

+8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.ArrayList;
1111
import java.util.Iterator;
1212
import java.util.List;
13+
import java.util.function.Consumer;
1314
import software.amazon.awssdk.core.interceptor.ExecutionAttributes;
1415
import software.amazon.awssdk.services.sqs.model.Message;
1516

@@ -59,4 +60,11 @@ public Iterator<Message> iterator() {
5960

6061
return it;
6162
}
63+
64+
@Override
65+
public void forEach(Consumer<? super Message> action) {
66+
for (Message message : this) {
67+
action.accept(message);
68+
}
69+
}
6270
}

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,8 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification {
307307

308308
then:
309309
resp.messages.size() == 1
310-
resp.messages.each {message -> runWithSpan("process child") {}}
310+
// using forEach instead of each here to test different ways of iterating messages list
311+
resp.messages.forEach {message -> runWithSpan("process child") {}}
311312
assertSqsTraces(false, true)
312313
}
313314

0 commit comments

Comments
 (0)