Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

- `opentelemetry-sdk-extension-aws`: Update xray trace id generator for 'random-trace-id' flags compatibility
([#4030](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4030))

### Fixed

- `opentelemetry-util-http`, `opentelemetry-instrumentation-requests`, `opentelemetry-instrumentation-wsgi`, `opentelemetry-instrumentation-asgi`: normalize byte-valued user-agent headers before detecting synthetic sources so attributes are recorded reliably.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -762,7 +762,7 @@ async def test_async_chat_completion_streaming_unsampled(

assert logs[0].log_record.trace_id is not None
assert logs[0].log_record.span_id is not None
assert logs[0].log_record.trace_flags == 0
assert not logs[0].log_record.trace_flags.sampled

assert logs[0].log_record.trace_id == logs[1].log_record.trace_id
assert logs[0].log_record.span_id == logs[1].log_record.span_id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -827,7 +827,7 @@ def test_chat_completion_with_content_span_unsampled(

assert logs[0].log_record.trace_id is not None
assert logs[0].log_record.span_id is not None
assert logs[0].log_record.trace_flags == 0
assert not logs[0].log_record.trace_flags.sampled

assert logs[0].log_record.trace_id == logs[1].log_record.trace_id
assert logs[0].log_record.span_id == logs[1].log_record.span_id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1044,7 +1044,8 @@ async def test_traceresponse_header(self):

trace_id = format_trace_id(span.get_span_context().trace_id)
span_id = format_span_id(span.get_span_context().span_id)
traceresponse = f"00-{trace_id}-{span_id}-01"
trace_flags = span.get_span_context().trace_flags
traceresponse = f"00-{trace_id}-{span_id}-{trace_flags:02x}"

self.assertListEqual(
response_start["headers"],
Expand Down Expand Up @@ -1318,7 +1319,8 @@ async def test_websocket_traceresponse_header(self):

trace_id = format_trace_id(span.get_span_context().trace_id)
span_id = format_span_id(span.get_span_context().span_id)
traceresponse = f"00-{trace_id}-{span_id}-01"
trace_flags = span.get_span_context().trace_flags
traceresponse = f"00-{trace_id}-{span_id}-{trace_flags:02x}"

self.assertListEqual(
socket_send["headers"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
SpanAttributes,
)
from opentelemetry.test.test_base import TestBase
from opentelemetry.trace import SpanKind
from opentelemetry.trace import SpanKind, TraceFlags
from opentelemetry.trace.span import Span, format_span_id, format_trace_id


Expand Down Expand Up @@ -217,7 +217,7 @@ def _assert_injected_span(self, msg_attrs: Dict[str, Any], span: Span):
trace_parent = msg_attrs["traceparent"]["StringValue"]
ctx = span.get_span_context()
self.assertEqual(
self._to_trace_parent(ctx.trace_id, ctx.span_id),
self._to_trace_parent(ctx.trace_id, ctx.span_id, ctx.trace_flags),
trace_parent.lower(),
)

Expand All @@ -230,8 +230,10 @@ def _default_span_attrs(self):
}

@staticmethod
def _to_trace_parent(trace_id: int, span_id: int) -> str:
return f"00-{format_trace_id(trace_id)}-{format_span_id(span_id)}-01".lower()
def _to_trace_parent(
trace_id: int, span_id: int, trace_flags: TraceFlags
) -> str:
return f"00-{format_trace_id(trace_id)}-{format_span_id(span_id)}-{trace_flags:02x}".lower()

def _get_only_span(self):
spans = self.get_finished_spans()
Expand All @@ -254,7 +256,9 @@ def _add_trace_parent(
self, message: Dict[str, Any], trace_id: int, span_id: int
):
message["MessageAttributes"]["traceparent"] = {
"StringValue": self._to_trace_parent(trace_id, span_id),
"StringValue": self._to_trace_parent(
trace_id, span_id, TraceFlags.get_default()
),
"DataType": "String",
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -644,9 +644,10 @@ async def test_trace_response_headers(self):
)
trace_id = format_trace_id(span.get_span_context().trace_id)
span_id = format_span_id(span.get_span_context().span_id)
trace_flags = span.get_span_context().trace_flags
self.assertEqual(
response["traceresponse"],
f"00-{trace_id}-{span_id}-01",
f"00-{trace_id}-{span_id}-{trace_flags:02x}",
)
self.memory_exporter.clear()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled(self):
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[DB_STATEMENT],
Expand Down Expand Up @@ -193,13 +194,14 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_stmt_enabled(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[DB_STATEMENT],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)

def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options(
Expand Down Expand Up @@ -236,9 +238,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[DB_STATEMENT],
Expand Down Expand Up @@ -329,9 +332,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[DB_STATEMENT],
Expand Down Expand Up @@ -370,13 +374,14 @@ def test_instrument_with_dbapi_sqlcomment_enabled_stmt_enabled(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[DB_STATEMENT],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)

def test_instrument_with_dbapi_sqlcomment_enabled_with_options(
Expand Down Expand Up @@ -415,9 +420,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_with_options(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[DB_STATEMENT],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled(self):
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[SpanAttributes.DB_STATEMENT],
Expand Down Expand Up @@ -196,13 +197,14 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_stmt_enabled(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[SpanAttributes.DB_STATEMENT],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)

def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options(
Expand Down Expand Up @@ -244,9 +246,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[SpanAttributes.DB_STATEMENT],
Expand Down Expand Up @@ -345,9 +348,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[SpanAttributes.DB_STATEMENT],
Expand Down Expand Up @@ -390,13 +394,14 @@ def test_instrument_with_dbapi_sqlcomment_enabled_stmt_enabled(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[SpanAttributes.DB_STATEMENT],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)

def test_instrument_with_dbapi_sqlcomment_enabled_with_options(
Expand Down Expand Up @@ -439,9 +444,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_with_options(
span = spans_list[0]
span_id = format(span.get_span_context().span_id, "016x")
trace_id = format(span.get_span_context().trace_id, "032x")
trace_flags = format(span.get_span_context().trace_flags, "02x")
self.assertEqual(
mock_cursor.execute.call_args[0][0],
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
)
self.assertEqual(
span.attributes[SpanAttributes.DB_STATEMENT],
Expand Down
Loading