Closed
Description
When trying to create a handler that extends one of these classes, the handleRequest
method in TracingRequestHandler
is erased to a generic Object
type. At runtime, Lambda inspects the type signature of this method and falls back to LinkedHashMap
if a proper event type is not defined. This is passed into the lambda, but later results in the following exception:
class java.util.LinkedHashMap cannot be cast to class com.amazonaws.services.lambda.runtime.events.SQSEvent (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.amazonaws.services.lambda.runtime.events.SQSEvent is in unnamed module of loader lambdainternal.CustomerClassLoader @30501e60): java.lang.ClassCastException
java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.amazonaws.services.lambda.runtime.events.SQSEvent (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.amazonaws.services.lambda.runtime.events.SQSEvent is in unnamed module of loader lambdainternal.CustomerClassLoader @30501e60)
at io.opentelemetry.instrumentation.awslambdaevents.v2_2.TracingSqsEventHandler.doHandleRequest(TracingSqsEventHandler.java:17)
at io.opentelemetry.instrumentation.awslambdacore.v1_0.TracingRequestHandler.handleRequest(TracingRequestHandler.java:79)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
TracingRequestHandler
should not use a generic type.
What version are you using?
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-aws-lambda-events-2.2</artifactId>
<version>1.20.2-alpha</version>
</dependency>
Environment
Corretto 11 Lambda Runtime.