Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
878dc5b
integration for aiomysql
tonal Aug 14, 2025
29b4e85
Drop _wrap_cursor_creation in integration aiomysql.py
tonal Aug 20, 2025
28e79b6
Potential KeyError in _wrap_connect
tonal Aug 20, 2025
950032f
Merge branch 'getsentry:master' into patch-2
tonal Aug 20, 2025
421abfa
Merge branch 'master' into patch-2
tonal Sep 10, 2025
ab35ef8
Merge branch 'master' into patch-2
antonpirker Sep 11, 2025
c09eb44
Merge branch 'master' into patch-2
tonal Sep 16, 2025
b3b04a1
Merge branch 'master' into patch-2
tonal Oct 10, 2025
d9d7282
Merge branch 'master' into patch-2
tonal Oct 31, 2025
faf1a87
Merge branch 'getsentry:master' into patch-2
tonal Apr 12, 2026
89b8669
feat(aiomysql): Add aiomysql integration
tonal Apr 12, 2026
ad11c32
fix(aiomysql): Address PR review comments
tonal Apr 13, 2026
e25d3ad
Merge remote-tracking branch 'origin/patch-2' into patch-2
tonal Apr 13, 2026
5f26753
fix(aiomysql): Remove duplicate MySQL service block from Jinja template
tonal Apr 13, 2026
a7319c9
fix(aiomysql): Use public cursor.connection instead of private _conne…
tonal Apr 13, 2026
5d39b16
fix(aiomysql): Use explicit signature in _wrap_connect to handle posi…
tonal Apr 13, 2026
facbe7b
Merge branch 'master' into patch-2
tonal Apr 13, 2026
3d85885
fix(aiomysql): Format code and add cryptography dep for MySQL 8.0 auth
tonal Apr 14, 2026
6e05b78
fix(aiomysql): Instrument Connection._connect to cover create_pool an…
tonal Apr 14, 2026
308571f
fix(aiomysql): Reuse _set_db_data in connect span for consistent null…
tonal Apr 14, 2026
a8e79d5
Merge upstream/master into patch-2
tonal May 12, 2026
93a0de6
Merge upstream/master into patch-2
tonal May 12, 2026
81825b6
fix(aiomysql): Use record_sql_queries_supporting_streaming
tonal May 12, 2026
a0143fd
fix(aiomysql): Support span streaming in _set_db_data and _wrap_connect
tonal May 12, 2026
53a276c
fix(aiomysql): Handle add_query_source for StreamedSpan and fix test …
tonal May 12, 2026
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
22 changes: 20 additions & 2 deletions .github/workflows/test-integrations-dbs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,33 @@ jobs:
image: postgres
env:
POSTGRES_PASSWORD: sentry
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
# Maps tcp port 5432 on service container to the host
ports:
- 5432:5432
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=5
ports:
- 3306:3306
env:
SENTRY_PYTHON_TEST_POSTGRES_HOST: ${{ matrix.python-version == '3.6' && 'postgres' || 'localhost' }}
SENTRY_PYTHON_TEST_POSTGRES_USER: postgres
SENTRY_PYTHON_TEST_POSTGRES_PASSWORD: sentry
SENTRY_PYTHON_TEST_MYSQL_HOST: ${{ matrix.python-version == '3.6' && 'mysql' || 'localhost' }}
SENTRY_PYTHON_TEST_MYSQL_USER: root
SENTRY_PYTHON_TEST_MYSQL_PASSWORD: root
SENTRY_PYTHON_TEST_MYSQL_DB: test
# Use Docker container only for Python 3.6
container: ${{ matrix.python-version == '3.6' && 'python:3.6' || null }}
steps:
Expand All @@ -73,6 +87,10 @@ jobs:
- name: Erase coverage
run: |
coverage erase
- name: Test aiomysql
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-aiomysql"
- name: Test asyncpg
run: |
set -x # print commands that are executed
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/test-integrations-web-1.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,11 @@ jobs:
image: postgres
env:
POSTGRES_PASSWORD: sentry
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
# Maps tcp port 5432 on service container to the host
ports:
- 5432:5432
env:
Expand Down
7 changes: 7 additions & 0 deletions scripts/populate_tox/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,13 @@
},
"python": ">=3.7",
},
"aiomysql": {
"package": "aiomysql",
"deps": {
"*": ["pytest-asyncio"],
},
"python": ">=3.7",
},
"beam": {
"package": "apache-beam",
"python": ">=3.7",
Expand Down
10 changes: 5 additions & 5 deletions scripts/populate_tox/package_dependencies.jsonl

Large diffs are not rendered by default.

23 changes: 12 additions & 11 deletions scripts/populate_tox/releases.jsonl

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions scripts/split_tox_gh_actions/split_tox_gh_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@
"asyncpg",
}

FRAMEWORKS_NEEDING_MYSQL = {
"aiomysql",
}

FRAMEWORKS_NEEDING_REDIS = {
"celery",
}
Expand Down Expand Up @@ -99,6 +103,7 @@
"gcp",
],
"DBs": [
"aiomysql",
"asyncpg",
"clickhouse_driver",
"pymongo",
Expand Down Expand Up @@ -324,6 +329,7 @@ def render_template(group, frameworks, py_versions):
"frameworks": frameworks,
"needs_clickhouse": bool(set(frameworks) & FRAMEWORKS_NEEDING_CLICKHOUSE),
"needs_docker": bool(set(frameworks) & FRAMEWORKS_NEEDING_DOCKER),
"needs_mysql": bool(set(frameworks) & FRAMEWORKS_NEEDING_MYSQL),
"needs_postgres": bool(set(frameworks) & FRAMEWORKS_NEEDING_POSTGRES),
"needs_redis": bool(set(frameworks) & FRAMEWORKS_NEEDING_REDIS),
"needs_java": bool(set(frameworks) & FRAMEWORKS_NEEDING_JAVA),
Expand Down
40 changes: 31 additions & 9 deletions scripts/split_tox_gh_actions/templates/test_group.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -12,32 +12,54 @@
# see https://github.com/actions/setup-python/issues/544#issuecomment-1332535877
os: [ubuntu-22.04]

{% if needs_docker %}
{% if needs_postgres or needs_mysql or needs_docker %}
services:
docker:
image: docker:dind # Required for Docker network management
options: --privileged # Required for Docker-in-Docker operations
{% endif %}
{% if needs_postgres %}
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: sentry
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
# Maps tcp port 5432 on service container to the host
ports:
- 5432:5432
{% endif %}
{% if needs_mysql %}
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=5
ports:
- 3306:3306
{% endif %}
{% if needs_docker %}
docker:
image: docker:dind # Required for Docker network management
options: --privileged # Required for Docker-in-Docker operations
{% endif %}
{% endif %}
{% if needs_postgres or needs_mysql %}
env:
{% if needs_postgres %}
SENTRY_PYTHON_TEST_POSTGRES_HOST: {% raw %}${{ matrix.python-version == '3.6' && 'postgres' || 'localhost' }}{% endraw %}
SENTRY_PYTHON_TEST_POSTGRES_USER: postgres
SENTRY_PYTHON_TEST_POSTGRES_PASSWORD: sentry

{% endif %}
{% if needs_mysql %}
SENTRY_PYTHON_TEST_MYSQL_HOST: {% raw %}${{ matrix.python-version == '3.6' && 'mysql' || 'localhost' }}{% endraw %}
SENTRY_PYTHON_TEST_MYSQL_USER: root
SENTRY_PYTHON_TEST_MYSQL_PASSWORD: root
SENTRY_PYTHON_TEST_MYSQL_DB: test
{% endif %}
{% endif %}
# Use Docker container only for Python 3.6
{% raw %}container: ${{ matrix.python-version == '3.6' && 'python:3.6' || null }}{% endraw %}
Expand Down
2 changes: 2 additions & 0 deletions sentry_sdk/integrations/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ def iter_default_integrations(

_AUTO_ENABLING_INTEGRATIONS = [
"sentry_sdk.integrations.aiohttp.AioHttpIntegration",
"sentry_sdk.integrations.aiomysql.AioMySQLIntegration",
"sentry_sdk.integrations.anthropic.AnthropicIntegration",
"sentry_sdk.integrations.ariadne.AriadneIntegration",
"sentry_sdk.integrations.arq.ArqIntegration",
Expand Down Expand Up @@ -117,6 +118,7 @@ def iter_default_integrations(

_MIN_VERSIONS = {
"aiohttp": (3, 4),
"aiomysql": (0, 1, 1),
"anthropic": (0, 16),
"ariadne": (0, 20),
"arq": (0, 23),
Expand Down
Loading