fix(tracer): support converting OpenTelemetry parent span context - #904
Open
arjun-rajappa wants to merge 2 commits into
Open
arjun-rajappa wants to merge 2 commits into
arjun-rajappa wants to merge 2 commits into
Conversation
Allow OpenTelemetry SpanContext instances in start_span by converting valid non-Instana parent contexts into Instana SpanContext objects instead of raising a TypeError. If the context is invalid, fall back to None. Include debug logs for parent context conversion and invalid context resets. Signed-off-by: Arjun Rajappa <arjun.rajappa@ibm.com>
pvital
requested changes
Sep 17, 2026
pvital
left a comment
Member
There was a problem hiding this comment.
@arjun-rajappa, can you add specific start_span test cases with context arguments with OTel and Instana SpanContext? You can use the Pytest parametrization for that.
… Context Signed-off-by: Arjun Rajappa <arjun.rajappa@ibm.com>
CagriYonca
requested changes
Sep 30, 2026
| if parent_context.is_valid: | ||
| logger.debug("Converting non-Instana parent context to Instana SpanContext") | ||
| parent_context = SpanContext( | ||
| trace_id=parent_context.trace_id, |
Contributor
There was a problem hiding this comment.
OTel uses 128bit TraceID but Instana uses 64bit.
We can use something like this to convert it:
from instana.util.ids import hex_id, hex_id_limited
hex_tid = hex_id(parent_context.trace_id) # 128-bit int → hex string
parent_context = SpanContext(
trace_id=int(hex_id_limited(parent_context.trace_id), 16) if len(hex_tid) > 16 else parent_context.trace_id, # get last 64bits if trace_id == 128bits
span_id=parent_context.span_id,
is_remote=parent_context.is_remote,
trace_flags=parent_context.trace_flags,
trace_state=parent_context.trace_state,
trace_parent=None,
long_trace_id=hex_tid if len(hex_tid) > 16 else None,
)| from opentelemetry.context.context import Context | ||
| from opentelemetry.trace import SpanKind | ||
| from opentelemetry.trace.span import _SPAN_ID_MAX_VALUE | ||
| from opentelemetry.trace import SpanKind, TraceFlags |
Contributor
There was a problem hiding this comment.
TraceFlags is not used.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Allow OpenTelemetry SpanContext instances in start_span by converting valid non-Instana parent contexts into Instana SpanContext objects instead of raising a TypeError. If the context is invalid, fall back to None. Include debug logs for parent context conversion and invalid context resets.