Skip to content

Conversation

moredip
Copy link
Contributor

@moredip moredip commented Aug 23, 2024

Description

Fixes a bug where SQLAlchemy engines created via sqlalchemy.engine_from_config(...) are not instrumented by SQLAlchemyInstrumentor.

sqlalchemy.engine_from_config(...) directly calls create_engine(...) imported from sqlalchemy.engine.create. If we don't wrap that copy of the create_engine method then engines created via engine_from_config are not
instrumented.

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

  • Added a unit test
  • ran it and checked that it failed
  • made the fix
  • verified that the test now passes

Does This PR Require a Core Repo Change?

  • Yes. - Link to PR:
  • No.

Checklist:

See contributing.md for styleguide, changelog guidelines, and more.

  • Followed the style guidelines of this project
  • Changelogs have been updated
  • Unit tests have been added
  • Documentation has been updated

sqlalchemy.engine_from_config directly calls create_engine imported from that path; if we don't
wrap that copy of the `create_engine` call then engines created via engine_from_config are not
instrumented.
Copy link

linux-foundation-easycla bot commented Aug 23, 2024

CLA Signed

The committers listed above are authorized under a signed CLA.

@moredip moredip requested a review from a team August 23, 2024 00:51
Co-authored-by: Emídio Neto <[email protected]>
Copy link
Member

@emdneto emdneto left a comment

Choose a reason for hiding this comment

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

oh wait, there's a pypy test failing 😓

@shalevr shalevr requested a review from a team as a code owner September 28, 2024 13:06
@tammy-baylis-swi
Copy link
Contributor

Thanks for putting this in! Currently 5 of the unit tests are failing with ModuleNotFoundError: No module named 'sqlalchemy.engine.create' which comes from sqlalchemy.engine.create being introduced in SQLAlchemy 2 but the tests are run in 1.1 and 1.4 (also tox.ini comment). The instrumentor doesn't seem to have bounds for supported SQLAlchemy version though, so I think it would be ok to bump the test-requirements versions. Please could you give that a try.

@moredip
Copy link
Contributor Author

moredip commented Nov 8, 2024

Thanks for putting this in! Currently 5 of the unit tests are failing with ModuleNotFoundError: No module named 'sqlalchemy.engine.create' which comes from sqlalchemy.engine.create being introduced in SQLAlchemy 2 but the tests are run in 1.1 and 1.4 (also tox.ini comment). The instrumentor doesn't seem to have bounds for supported SQLAlchemy version though, so I think it would be ok to bump the test-requirements versions. Please could you give that a try.

Sorry for dropping the ball on this for a while, @tammy-baylis-swi. I've not contributed to otel before, and not used tox before either; would you be able to elaborate on what I need to do with the test-requirements versions?

@tammy-baylis-swi
Copy link
Contributor

Sorry for dropping the ball on this for a while, @tammy-baylis-swi. I've not contributed to otel before, and not used tox before either; would you be able to elaborate on what I need to do with the test-requirements versions?

No worries @moredip ! Coincidentally, yesterday we merged 2 PRs to address some of what I mentioned:

I'm going to merge main into this branch and reassess.

@moredip moredip requested a review from emdneto November 9, 2024 18:37
@tammy-baylis-swi
Copy link
Contributor

Getting closer! Please could you run a tox -e ruff on your local and push the formatting change to get this to pass:

https://github.com/open-telemetry/opentelemetry-python-contrib/actions/runs/11960954700/job/33346209372?pr=2816

Signed-off-by: emdneto <[email protected]>
Copy link
Contributor

@tammy-baylis-swi tammy-baylis-swi left a comment

Choose a reason for hiding this comment

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

Looks good to me. Thank you 😺

@moredip
Copy link
Contributor Author

moredip commented Nov 22, 2024

Looks good to me. Thank you 😺

Thanks so much for patiently shepherding me through! Very much appreciated 🙇

@moredip
Copy link
Contributor Author

moredip commented Dec 4, 2024

@tammy-baylis-swi @emdneto @xrmx is this OK to merge, or do I also need to wait on a 👍 from @shalevr

@shalevr shalevr merged commit 7617031 into open-telemetry:main Dec 4, 2024
573 checks passed
xrmx added a commit to xrmx/opentelemetry-python-contrib that referenced this pull request Jan 24, 2025
…onfig (open-telemetry#2816)

* wrap sqlalchemy.engine.create.create_engine

sqlalchemy.engine_from_config directly calls create_engine imported from that path; if we don't
wrap that copy of the `create_engine` call then engines created via engine_from_config are not
instrumented.

* add changelog entry

* Update CHANGELOG.md

Co-authored-by: Emídio Neto <[email protected]>

* Update instrumentation/opentelemetry-instrumentation-sqlalchemy/tests/test_sqlalchemy.py

Co-authored-by: Tammy Baylis <[email protected]>

* make some monkey-patching conditional on the version of SQLAlchemy

* lint

* fix changelog

Signed-off-by: emdneto <[email protected]>

* Update CHANGELOG.md

---------

Signed-off-by: emdneto <[email protected]>
Co-authored-by: Emídio Neto <[email protected]>
Co-authored-by: Leighton Chen <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Tammy Baylis <[email protected]>
Co-authored-by: Riccardo Magliocchetti <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants