Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,11 @@ def _span_flags(
child_trace_flags: int, parent_span_context: Optional[SpanContext]
) -> int:
# Lower 8 bits: W3C TraceFlags
# Handle TraceFlags objects, regular ints, and test mocks
# TraceFlags is an int subclass, but we handle Mock objects in tests
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again the code should not be aware of the mocks in tests, what tests are failing? Can we update the mocks to be speced against the class we need?

Copy link
Member

@emdneto emdneto Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for otlp-http-exporter the fix is small, need to add trace_flags to the mocked span context, here

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for otlp-grpc-exporter will have to fix the same, but in more places here

try:
flags = (
int(child_trace_flags) & PB2SpanFlags.SPAN_FLAGS_TRACE_FLAGS_MASK
)
except (TypeError, ValueError):
# If conversion fails (e.g., Mock object), default to 0
flags = child_trace_flags & PB2SpanFlags.SPAN_FLAGS_TRACE_FLAGS_MASK
except TypeError:
# If bitwise operation fails (e.g., Mock object in tests), default to 0
flags = 0
# Always indicate whether parent remote information is known
flags |= PB2SpanFlags.SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
Expand Down Expand Up @@ -169,26 +167,14 @@ def _encode_links(links: Sequence[Link]) -> Sequence[PB2SPan.Link]:
if links:
pb2_links = []
for link in links:
# For links, encode trace_flags and is_remote from the link's context
# Handle TraceFlags objects, regular ints, and test mocks
try:
flags = (
int(link.context.trace_flags)
& PB2SpanFlags.SPAN_FLAGS_TRACE_FLAGS_MASK
)
except (TypeError, ValueError):
# If conversion fails (e.g., Mock object), default to 0
flags = 0
flags |= PB2SpanFlags.SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
if link.context.is_remote:
flags |= PB2SpanFlags.SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK

# For links, we encode the link's own context (not treating it as parent-child)
# The link context's is_remote indicates if the linked span is from a remote process
encoded_link = PB2SPan.Link(
trace_id=_encode_trace_id(link.context.trace_id),
span_id=_encode_span_id(link.context.span_id),
attributes=_encode_attributes(link.attributes),
dropped_attributes_count=link.dropped_attributes,
flags=flags,
flags=_span_flags(link.context.trace_flags, link.context),
)
pb2_links.append(encoded_link)
return pb2_links
Expand Down
Loading