Ensure lambda instrumentation only notifies extension once. #5422
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What Does This Do
Prevent calling
start-invocationandend-invocationon the aws lambda extension multiple times.The lambda event needs to be serialized to json and shared with the extension. This event was properly serialized for the second wrapping, but not for the first. This means that once the extra handler wrapping is ignored, only one
aws.lambdaspan is being created, but the lack of event json means we won't be able to create inferred spans or properly handle trace context.The solution for this second problem is to add a new json adapter to serialize these types.
Motivation
In the most recent version of the java tracing layer for aws lambda, the request handler is being wrapped at least twice.
This double wrapping is causing the tracer to make calls to
start-invocationandend-invocationmultiple times. Aaws.lambdaroot span is created in the extension for every call to these endpoints.Additional Notes