Tracing: fix explicit context propagation when running in javaagent #39602
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.
Fixes #38221
See open-telemetry/opentelemetry-java-instrumentation#11042 for the context.
TL;DR:
when azure-core-tracing-otel is running inside Java OTel or ApplicationInsights agents, the otel context is relocated.
However users passing context explicitly pass the original non-relocated context.
As a result, we can't correlate with the explicit context passed by users.
We need to handle both cases.
This change detects if we're running in the agent and converts original context to the relocated one using otel-provided public APIs using reflection.
#38221 also lists documentation, which we already have in the
azure-sdk-for-java/sdk/core/azure-core-tracing-opentelemetry/README.md
Lines 104 to 106 in 2f56b21
and
azure-sdk-for-java/sdk/core/azure-core-tracing-opentelemetry/README.md
Lines 149 to 152 in 2f56b21