Skip to content

Commit 329ecd4

Browse files
authored
[Bugfix] Duplicate lambda spans in Java 11 (#1011)
In the [previous bugfix](#1000), we missed porting this change from OTel specifically for Java 8 and 11 runtimes. open-telemetry/opentelemetry-java-instrumentation#10942 **Testing:** Created an ADOT lambda layer with the change and verified that the duplicate lambda spans do not appear for Java 11, 17, and 21. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent 7b4fcdd commit 329ecd4

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

lambda-layer/patches/opentelemetry-java-instrumentation.patch

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,3 +729,21 @@ index 94a85244e2..25a32896aa 100644
729729
@Test
730730
void handlerTraced() {
731731
String result = handler().handleRequest("hello", context);
732+
diff --git a/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java
733+
index 0743cdea75..dfc70b368f 100644
734+
--- a/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java
735+
+++ b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java
736+
@@ -38,7 +38,12 @@ public class AwsLambdaRequestHandlerInstrumentation implements TypeInstrumentati
737+
@Override
738+
public ElementMatcher<TypeDescription> typeMatcher() {
739+
return implementsInterface(named("com.amazonaws.services.lambda.runtime.RequestHandler"))
740+
- .and(not(nameStartsWith("com.amazonaws.services.lambda.runtime.api.client")));
741+
+ .and(not(nameStartsWith("com.amazonaws.services.lambda.runtime.api.client")))
742+
+ // In Java 8 and Java 11 runtimes,
743+
+ // AWS Lambda runtime is packaged under `lambdainternal` package.
744+
+ // But it is `com.amazonaws.services.lambda.runtime.api.client`
745+
+ // for new runtime likes Java 17 and Java 21.
746+
+ .and(not(nameStartsWith("lambdainternal")));
747+
}
748+
749+
@Override

0 commit comments

Comments
 (0)