Added logic to run sampler a second time after http instrumentation libraries #107
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.
Issue #, if available:
Description of changes:
This new function runs the sampler a second time after the needed attributes (such as UrlPath and HttpTarget) are finally available from the http instrumentation libraries. The sampler hooked into the Opentelemetry SDK runs right before any activity is started so for the purposes of our X-Ray sampler, that isn't going to work and breaks the X-Ray functionality. Running it a second time after http instrumentation libraries are run allows us to retain the sampler functionality.
Below is the stack trace showing the sampler running before the instrumentation libraries are started.
Below is also a comment from AspNetCore instrumentation library mentioning that the required attributes are only available after sampling decision is made:
https://github.com/open-telemetry/opentelemetry-dotnet-contrib/blob/main/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs#L91-L99
Finally, I opened this discussion and in there is a slack thread going through a similar issue:
open-telemetry/opentelemetry-dotnet#5839
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.