Skip to content

aws-lambda-events: Using TracingSqsMessageHandler or TracingSqsEventHandler result in ClassCastException #7362

Closed
@tylerbenson

Description

@tylerbenson

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions