Skip to content

Commit 5160ca6

Browse files
committed
Merge branch 'main' into aiohttp-server-instrumentation
2 parents 40c6e3d + a02d98c commit 5160ca6

File tree

151 files changed

+3429
-424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

151 files changed

+3429
-424
lines changed

.github/component_owners.yml

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ components:
33
docs/instrumentation:
44
- nemoshlag
55

6+
67
instrumentation/opentelemetry-instrumentation-aio-pika:
78
- ofek1weiss
89

@@ -63,3 +64,6 @@ components:
6364

6465
instrumentation/opentelemetry-instrumentation-requests:
6566
- ocelotl
67+
68+
instrumentation/opentelemetry-instrumentation-cassandra:
69+
- mattcontinisio

.github/workflows/test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- 'release/*'
77
pull_request:
88
env:
9-
CORE_REPO_SHA: e9530c5c548d08a6aaa56268d103f9beb00cd002
9+
CORE_REPO_SHA: c41b6bf29e9486a71ba1c40cd0ea35a03b2f7489
1010

1111
jobs:
1212
build:

CHANGELOG.md

+37-8
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,48 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## Unreleased
9+
10+
### Fixed
11+
12+
- `opentelemetry-instrumentation-asgi` Fix UnboundLocalError local variable 'start' referenced before assignment
13+
([#1889](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1889))
14+
- Fixed union typing error not compatible with Python 3.7 introduced in `opentelemetry-util-http`, fix tests introduced by patch related to sanitize method for wsgi
15+
([#1913](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1913))
16+
17+
### Added
18+
19+
- `opentelemetry-resource-detector-azure` Add resource detectors for Azure App Service and VM
20+
([#1901](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1901))
21+
22+
## Version 1.19.0/0.40b0 (2023-07-13)
923
- `opentelemetry-instrumentation-asgi` Add `http.server.request.size` metric
1024
([#1867](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1867))
1125

1226
### Fixed
1327

28+
- `opentelemetry-instrumentation-django` Fix empty span name when using
29+
`path("", ...)` ([#1788](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1788)
1430
- Fix elastic-search instrumentation sanitization to support bulk queries
1531
([#1870](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1870))
1632
- Update falcon instrumentation to follow semantic conventions
1733
([#1824](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1824))
18-
- Fix sqlalchemy instrumentation wrap methods to accept sqlcommenter options([#1873](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1873))
34+
- Fix sqlalchemy instrumentation wrap methods to accept sqlcommenter options
35+
([#1873](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1873))
1936

2037
### Added
2138

22-
- Fix async redis clients not being traced correctly ([#1830](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1830))
39+
- Add instrumentor support for cassandra and scylla
40+
([#1902](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1902))
41+
- Add instrumentor support for mysqlclient
42+
([#1744](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1744))
43+
- Fix async redis clients not being traced correctly
44+
([#1830](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1830))
2345
- Make Flask request span attributes available for `start_span`.
2446
([#1784](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1784))
2547
- Fix falcon instrumentation's usage of Span Status to only set the description if the status code is ERROR.
2648
([#1840](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1840))
27-
- Instrument all httpx versions >= 0.18. ([#1748](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1748))
49+
- Instrument all httpx versions >= 0.18.
50+
([#1748](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1748))
2851
- Fix `Invalid type NoneType for attribute X (opentelemetry-instrumentation-aws-lambda)` error when some attributes do not exist
2952
([#1780](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1780))
3053
- Add metric instrumentation for celery
@@ -37,14 +60,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3760
([#1810](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1810))
3861
- `opentelemetry-instrumentation-urllib3` Add support for urllib3 version 2
3962
([#1879](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1879))
63+
- Add optional distro and configurator selection for auto-instrumentation
64+
([#1823](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1823))
65+
66+
### Added
67+
- `opentelemetry-instrumentation-kafka-python` Add instrumentation to `consume` method
68+
([#1786](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1786))
4069

4170
## Version 1.18.0/0.39b0 (2023-05-10)
4271

43-
- `opentelemetry-instrumentation-system-metrics` Add `process.` prefix to `runtime.memory`, `runtime.cpu.time`, and `runtime.gc_count`. Change `runtime.memory` from count to UpDownCounter. ([#1735](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1735))
72+
- Update runtime metrics to follow semantic conventions
73+
([#1735](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1735))
4474
- Add request and response hooks for GRPC instrumentation (client only)
4575
([#1706](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1706))
4676
- Fix memory leak in SQLAlchemy instrumentation where disposed `Engine` does not get garbage collected
47-
([#1771](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1771)
77+
([#1771](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1771))
4878
- `opentelemetry-instrumentation-pymemcache` Update instrumentation to support pymemcache >4
4979
([#1764](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1764))
5080
- `opentelemetry-instrumentation-confluent-kafka` Add support for higher versions of confluent_kafka
@@ -67,8 +97,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6797

6898
### Changed
6999

70-
- `opentelemetry-instrumentation-botocore` now uses the AWS X-Ray propagator by
71-
default
100+
- `opentelemetry-instrumentation-botocore` now uses the AWS X-Ray propagator by default
72101
([#1741](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1741))
73102

74103
### Fixed
@@ -86,7 +115,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
86115

87116
### Changed
88117
- Update HTTP server/client instrumentation span names to comply with spec
89-
([#1759](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1759)
118+
([#1759](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1759))
90119

91120
## Version 1.17.0/0.38b0 (2023-03-22)
92121

_template/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

docs-requirements.txt

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ asyncpg>=0.12.0
2525
boto~=2.0
2626
botocore~=1.0
2727
boto3~=1.0
28+
cassandra-driver~=3.25
2829
celery>=4.0
2930
confluent-kafka>= 1.8.2,<= 2.2.0
3031
elasticsearch>=2.0,<9.0
@@ -33,6 +34,7 @@ falcon~=2.0
3334
grpcio~=1.27
3435
kafka-python>=2.0,<3.0
3536
mysql-connector-python~=8.0
37+
mysqlclient~=2.1.1
3638
psutil>=5
3739
pika>=0.12.0
3840
pymongo~=3.1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
OpenTelemetry Cassandra Instrumentation
2+
=======================================
3+
4+
.. automodule:: opentelemetry.instrumentation.cassandra
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
OpenTelemetry mysqlclient Instrumentation
2+
=========================================
3+
4+
.. automodule:: opentelemetry.instrumentation.mysqlclient
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:

eachdist.ini

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ sortfirst=
1616
ext/*
1717

1818
[stable]
19-
version=1.19.0.dev
19+
version=1.20.0.dev
2020

2121
packages=
2222
opentelemetry-sdk
@@ -34,7 +34,7 @@ packages=
3434
opentelemetry-api
3535

3636
[prerelease]
37-
version=0.40b0.dev
37+
version=0.41b0.dev
3838

3939
packages=
4040
all

exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

exporter/opentelemetry-exporter-richconsole/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ classifiers = [
2727
dependencies = [
2828
"opentelemetry-api ~= 1.12",
2929
"opentelemetry-sdk ~= 1.12",
30-
"opentelemetry-semantic-conventions == 0.40b0.dev",
30+
"opentelemetry-semantic-conventions == 0.41b0.dev",
3131
"rich>=10.0.0",
3232
]
3333

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

instrumentation/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
| [opentelemetry-instrumentation-boto](./opentelemetry-instrumentation-boto) | boto~=2.0 | No
1111
| [opentelemetry-instrumentation-boto3sqs](./opentelemetry-instrumentation-boto3sqs) | boto3 ~= 1.0 | No
1212
| [opentelemetry-instrumentation-botocore](./opentelemetry-instrumentation-botocore) | botocore ~= 1.0 | No
13+
| [opentelemetry-instrumentation-cassandra](./opentelemetry-instrumentation-cassandra) | cassandra-driver ~= 3.25,scylla-driver ~= 3.25 | No
1314
| [opentelemetry-instrumentation-celery](./opentelemetry-instrumentation-celery) | celery >= 4.0, < 6.0 | No
1415
| [opentelemetry-instrumentation-confluent-kafka](./opentelemetry-instrumentation-confluent-kafka) | confluent-kafka >= 1.8.2, <= 2.2.0 | No
1516
| [opentelemetry-instrumentation-dbapi](./opentelemetry-instrumentation-dbapi) | dbapi | No
@@ -24,6 +25,7 @@
2425
| [opentelemetry-instrumentation-kafka-python](./opentelemetry-instrumentation-kafka-python) | kafka-python >= 2.0 | No
2526
| [opentelemetry-instrumentation-logging](./opentelemetry-instrumentation-logging) | logging | No
2627
| [opentelemetry-instrumentation-mysql](./opentelemetry-instrumentation-mysql) | mysql-connector-python ~= 8.0 | No
28+
| [opentelemetry-instrumentation-mysqlclient](./opentelemetry-instrumentation-mysqlclient) | mysqlclient < 3 | No
2729
| [opentelemetry-instrumentation-pika](./opentelemetry-instrumentation-pika) | pika >= 0.12.0 | No
2830
| [opentelemetry-instrumentation-psycopg2](./opentelemetry-instrumentation-psycopg2) | psycopg2 >= 2.7.3.1 | No
2931
| [opentelemetry-instrumentation-pymemcache](./opentelemetry-instrumentation-pymemcache) | pymemcache >= 1.3.5, < 5 | No

instrumentation/opentelemetry-instrumentation-aio-pika/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ instruments = [
3535
]
3636
test = [
3737
"opentelemetry-instrumentation-aio-pika[instruments]",
38-
"opentelemetry-test-utils == 0.40b0.dev",
38+
"opentelemetry-test-utils == 0.41b0.dev",
3939
"pytest",
4040
"wrapt >= 1.0.0, < 2.0.0",
4141
]

instrumentation/opentelemetry-instrumentation-aio-pika/src/opentelemetry/instrumentation/aio_pika/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

instrumentation/opentelemetry-instrumentation-aiohttp-client/pyproject.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ classifiers = [
2626
]
2727
dependencies = [
2828
"opentelemetry-api ~= 1.12",
29-
"opentelemetry-instrumentation == 0.40b0.dev",
30-
"opentelemetry-semantic-conventions == 0.40b0.dev",
31-
"opentelemetry-util-http == 0.40b0.dev",
29+
"opentelemetry-instrumentation == 0.41b0.dev",
30+
"opentelemetry-semantic-conventions == 0.41b0.dev",
31+
"opentelemetry-util-http == 0.41b0.dev",
3232
"wrapt >= 1.0.0, < 2.0.0",
3333
]
3434

instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

instrumentation/opentelemetry-instrumentation-aiopg/pyproject.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ classifiers = [
2626
]
2727
dependencies = [
2828
"opentelemetry-api ~= 1.12",
29-
"opentelemetry-instrumentation == 0.40b0.dev",
30-
"opentelemetry-instrumentation-dbapi == 0.40b0.dev",
29+
"opentelemetry-instrumentation == 0.41b0.dev",
30+
"opentelemetry-instrumentation-dbapi == 0.41b0.dev",
3131
"wrapt >= 1.0.0, < 2.0.0",
3232
]
3333

@@ -37,8 +37,8 @@ instruments = [
3737
]
3838
test = [
3939
"opentelemetry-instrumentation-aiopg[instruments]",
40-
"opentelemetry-semantic-conventions == 0.40b0.dev",
41-
"opentelemetry-test-utils == 0.40b0.dev",
40+
"opentelemetry-semantic-conventions == 0.41b0.dev",
41+
"opentelemetry-test-utils == 0.41b0.dev",
4242
]
4343

4444
[project.entry-points.opentelemetry_instrumentor]

instrumentation/opentelemetry-instrumentation-aiopg/src/opentelemetry/instrumentation/aiopg/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

instrumentation/opentelemetry-instrumentation-asgi/pyproject.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ classifiers = [
2727
dependencies = [
2828
"asgiref ~= 3.0",
2929
"opentelemetry-api ~= 1.12",
30-
"opentelemetry-instrumentation == 0.40b0.dev",
31-
"opentelemetry-semantic-conventions == 0.40b0.dev",
32-
"opentelemetry-util-http == 0.40b0.dev",
30+
"opentelemetry-instrumentation == 0.41b0.dev",
31+
"opentelemetry-semantic-conventions == 0.41b0.dev",
32+
"opentelemetry-util-http == 0.41b0.dev",
3333
]
3434

3535
[project.optional-dependencies]
@@ -38,7 +38,7 @@ instruments = [
3838
]
3939
test = [
4040
"opentelemetry-instrumentation-asgi[instruments]",
41-
"opentelemetry-test-utils == 0.40b0.dev",
41+
"opentelemetry-test-utils == 0.41b0.dev",
4242
]
4343

4444
[project.urls]

instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,7 @@ async def __call__(self, scope, receive, send):
538538
receive: An awaitable callable yielding dictionaries
539539
send: An awaitable callable taking a single dictionary as argument.
540540
"""
541+
start = default_timer()
541542
if scope["type"] not in ("http", "websocket"):
542543
return await self.app(scope, receive, send)
543544

@@ -591,7 +592,6 @@ async def __call__(self, scope, receive, send):
591592
send,
592593
duration_attrs,
593594
)
594-
start = default_timer()
595595

596596
await self.app(scope, otel_receive, otel_send)
597597
finally:

instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py

+34
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
# pylint: disable=too-many-lines
1616

17+
import asyncio
1718
import sys
1819
import unittest
1920
from timeit import default_timer
@@ -796,5 +797,38 @@ async def wrapped_app(scope, receive, send):
796797
)
797798

798799

800+
class TestAsgiApplicationRaisingError(AsgiTestBase):
801+
def tearDown(self):
802+
pass
803+
804+
@mock.patch(
805+
"opentelemetry.instrumentation.asgi.collect_custom_request_headers_attributes",
806+
side_effect=ValueError("whatever"),
807+
)
808+
def test_asgi_issue_1883(
809+
self, mock_collect_custom_request_headers_attributes
810+
):
811+
"""
812+
Test that exception UnboundLocalError local variable 'start' referenced before assignment is not raised
813+
See https://github.com/open-telemetry/opentelemetry-python-contrib/issues/1883
814+
"""
815+
app = otel_asgi.OpenTelemetryMiddleware(simple_asgi)
816+
self.seed_app(app)
817+
self.send_default_request()
818+
try:
819+
asyncio.get_event_loop().run_until_complete(
820+
self.communicator.stop()
821+
)
822+
except ValueError as exc_info:
823+
self.assertEqual(exc_info.args[0], "whatever")
824+
except Exception as exc_info: # pylint: disable=W0703
825+
self.fail(
826+
"expecting ValueError('whatever'), received instead: "
827+
+ str(exc_info)
828+
)
829+
else:
830+
self.fail("expecting ValueError('whatever')")
831+
832+
799833
if __name__ == "__main__":
800834
unittest.main()

instrumentation/opentelemetry-instrumentation-asyncpg/pyproject.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ classifiers = [
2626
]
2727
dependencies = [
2828
"opentelemetry-api ~= 1.12",
29-
"opentelemetry-instrumentation == 0.40b0.dev",
30-
"opentelemetry-semantic-conventions == 0.40b0.dev",
29+
"opentelemetry-instrumentation == 0.41b0.dev",
30+
"opentelemetry-semantic-conventions == 0.41b0.dev",
3131
]
3232

3333
[project.optional-dependencies]
@@ -36,7 +36,7 @@ instruments = [
3636
]
3737
test = [
3838
"opentelemetry-instrumentation-asyncpg[instruments]",
39-
"opentelemetry-test-utils == 0.40b0.dev",
39+
"opentelemetry-test-utils == 0.41b0.dev",
4040
]
4141

4242
[project.entry-points.opentelemetry_instrumentor]

instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.40b0.dev"
15+
__version__ = "0.41b0.dev"

0 commit comments

Comments
 (0)