Skip to content

Commit 2d7afac

Browse files
Merge branch 'main' into deprecated-iscoroutinefunction
2 parents 2a6b08e + 9515f04 commit 2d7afac

File tree

21 files changed

+629
-208
lines changed
  • exporter/opentelemetry-exporter-richconsole
  • instrumentation
    • opentelemetry-instrumentation-aiohttp-client
    • opentelemetry-instrumentation-aiohttp-server
    • opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi
    • opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django
    • opentelemetry-instrumentation-falcon/src/opentelemetry/instrumentation/falcon
    • opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi
    • opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask
    • opentelemetry-instrumentation-psycopg2
    • opentelemetry-instrumentation-psycopg/src/opentelemetry/instrumentation/psycopg
    • opentelemetry-instrumentation-pyramid/src/opentelemetry/instrumentation/pyramid
    • opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette
    • opentelemetry-instrumentation-tornado/src/opentelemetry/instrumentation/tornado
    • opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi
  • util/opentelemetry-util-genai/tests

21 files changed

+629
-208
lines changed

CHANGELOG.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2323
([#3886](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3886))
2424
- `opentelemetry-instrumentation-mysql`, `opentelemetry-instrumentation-mysqlclient`, `opentelemetry-instrumentation-pymysql`: improve readthedocs for sqlcommenter configuration.
2525
([#3885](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3885))
26+
- `opentelemetry-instrumentation-django`: improve readthedocs for sqlcommenter configuration.
27+
([#3884](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3884))
28+
- `opentelemetry-instrumentation-aiohttp-server`: add support for custom header captures via `OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST` and `OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE`
29+
([#3916](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3916))
2630

2731
### Fixed
2832

29-
- `opentelemetry-instrumentation-botocore`: Handle dict input in _decode_tool_use for Bedrock streaming
33+
- `opentelemetry-instrumentation-botocore`: bedrock: only decode JSON input buffer in Anthropic Claude streaming
3034
([#3875](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3875))
35+
- `opentelemetry-instrumentation-aiohttp-client`, `opentelemetry-instrumentation-aiohttp-server`: Fix readme links and text
36+
([#3902](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3902))
3137
- `opentelemetry-instrumentation-aws-lambda`: Fix ImportError with slash-delimited handler paths
3238
([#3894](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3894))
39+
- `opentelemetry-exporter-richconsole`: Prevent deadlock when parent span is not part of the batch
40+
([#3900](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3900))
41+
- `opentelemetry-instrumentation-psycopg2`, `opentelemetry-instrumentation-psycopg`: improve readthedocs for sqlcommenter configuration.
42+
([#3882](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3882))
43+
- `opentelemetry-instrumentation-aiohttp-server`: delay initialization of tracer, meter and excluded urls to instrumentation for testability
44+
([#3836](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3836))
3345
- Replace Python 3.14-deprecated `asyncio.iscoroutinefunction` with `inspect.iscoroutinefunction`.
3446
([#3880](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3880))
3547

exporter/opentelemetry-exporter-richconsole/src/opentelemetry/exporter/richconsole/__init__.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,17 @@ def spans_to_tree(spans: typing.Sequence[ReadableSpan]) -> Dict[str, Tree]:
173173
trees = {}
174174
parents = {}
175175
spans = list(spans)
176+
span_ids = {s.context.span_id for s in spans}
176177
while spans:
177178
for span in spans:
178-
if not span.parent:
179+
if not span.parent or span.parent.span_id not in span_ids:
179180
trace_id = opentelemetry.trace.format_trace_id(
180181
span.context.trace_id
181182
)
182-
trees[trace_id] = Tree(label=f"Trace {trace_id}")
183-
child = trees[trace_id].add(
183+
tree = trees.setdefault(
184+
trace_id, Tree(label=f"Trace {trace_id}")
185+
)
186+
child = tree.add(
184187
label=Text.from_markup(
185188
f"[blue][{_ns_to_time(span.start_time)}][/blue] [bold]{span.name}[/bold], span {opentelemetry.trace.format_span_id(span.context.span_id)}"
186189
)

exporter/opentelemetry-exporter-richconsole/test-requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ pluggy==1.5.0
99
py-cpuinfo==9.0.0
1010
Pygments==2.17.2
1111
pytest==7.4.4
12+
pytest-timeout==2.3.1
1213
rich==13.7.1
1314
tomli==2.0.1
1415
typing_extensions==4.12.2

exporter/opentelemetry-exporter-richconsole/tests/test_rich_exporter.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,15 @@ def test_multiple_traces(tracer_provider):
9696
parent_2.name in child.label
9797
for child in trees[traceid_1].children[0].children
9898
)
99+
100+
101+
@pytest.mark.timeout(30)
102+
def test_no_deadlock(tracer_provider):
103+
# non-regression test for https://github.com/open-telemetry/opentelemetry-python-contrib/issues/3254
104+
105+
tracer = tracer_provider.get_tracer(__name__)
106+
with tracer.start_as_current_span("parent"):
107+
with tracer.start_as_current_span("child") as child:
108+
pass
109+
110+
RichConsoleSpanExporter.spans_to_tree((child,))

instrumentation/opentelemetry-instrumentation-aiohttp-client/README.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Installation
1919
References
2020
----------
2121

22+
* `OpenTelemetry aiohttp client Instrumentation <https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/aiohttp_client/aiohttp_client.html>`_
23+
* `aiohttp Tracing Reference <https://docs.aiohttp.org/en/stable/tracing_reference.html>`_
2224
* `OpenTelemetry Project <https://opentelemetry.io/>`_
23-
* `aiohttp client Tracing <https://docs.aiohttp.org/en/stable/tracing_reference.html>`_
2425
* `OpenTelemetry Python Examples <https://github.com/open-telemetry/opentelemetry-python/tree/main/docs/examples>`_

instrumentation/opentelemetry-instrumentation-aiohttp-server/README.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ OpenTelemetry aiohttp server Integration
33

44
|pypi|
55

6-
.. |pypi| image:: https://badge.fury.io/py/opentelemetry-instrumentation-aiohttp-client.svg
7-
:target: https://pypi.org/project/opentelemetry-instrumentation-aiohttp-client/
6+
.. |pypi| image:: https://badge.fury.io/py/opentelemetry-instrumentation-aiohttp-server.svg
7+
:target: https://pypi.org/project/opentelemetry-instrumentation-aiohttp-server/
88

99
This library allows tracing HTTP requests made by the
1010
`aiohttp server <https://docs.aiohttp.org/en/stable/server.html>`_ library.
@@ -19,6 +19,7 @@ Installation
1919
References
2020
----------
2121

22+
* `OpenTelemetry aiohttp server Instrumentation <https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/aiohttp_server/aiohttp_server.html>`_
23+
* `aiohttp Tracing Reference <https://docs.aiohttp.org/en/stable/tracing_reference.html>`_
2224
* `OpenTelemetry Project <https://opentelemetry.io/>`_
23-
* `aiohttp client Tracing <https://docs.aiohttp.org/en/stable/tracing_reference.html>`_
2425
* `OpenTelemetry Python Examples <https://github.com/open-telemetry/opentelemetry-python/tree/main/docs/examples>`_

0 commit comments

Comments
 (0)