-
Notifications
You must be signed in to change notification settings - Fork 665
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make auto instrumentation use the same dependency resolver as manual instrumentation does #3202
base: main
Are you sure you want to change the base?
Make auto instrumentation use the same dependency resolver as manual instrumentation does #3202
Conversation
opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py
Outdated
Show resolved
Hide resolved
9cf2a02
to
49762d1
Compare
00362cf
to
149f84f
Compare
@xrmx, Here is an option for making the auto instrumentation use the same dependency checker as the manual instrumentation. There are a few rough edges but I think ironing those out gets us down a path of a major rewrite pretty quickly so maybe this little PR could work. |
|
||
_logger = getLogger(__name__) | ||
|
||
|
||
class _EntryPointDistFinder: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason why you are removing this cache? I'm not sure this cache really helps with anything :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When I removed line 103 below, I couldn't find any other usages of this class so I removed this class just to keep things tidy.
If I missed a usage or a use case somewhere I am happy to re-add it. I just pulled it since my code search told me it was dead code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually think get_dist_dependency_conflicts is now unused too
> ag get_dist_dependency_conflicts
opentelemetry-instrumentation/tests/test_dependencies.py
23: get_dist_dependency_conflicts,
68: def test_get_dist_dependency_conflicts(self):
82: conflict = get_dist_dependency_conflicts(dist)
90: def test_get_dist_dependency_conflicts_requires_none(self):
103: conflict = get_dist_dependency_conflicts(dist)
opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py
51:def get_dist_dependency_conflicts(
CHANGELOG.md
64:- `opentelemetry-instrumentation` Fix `get_dist_dependency_conflicts` if no distribution requires
3533e55
to
aad1679
Compare
@xrmx just checking in, have you had a chance to look at this and my responses to your comment? |
28e57e5
to
1b6d07e
Compare
Not yet, sorry |
d8af135
to
a5c86fa
Compare
87a167d
to
eecb02f
Compare
eecb02f
to
e0d489f
Compare
@xrmx changelog fixed up |
@@ -64,41 +62,3 @@ def test_get_dependency_conflicts_mismatched_version(self): | |||
str(conflict), | |||
f'DependencyConflict: requested: "pytest == 5000" but found: "pytest {pytest.__version__}"', | |||
) | |||
|
|||
def test_get_dist_dependency_conflicts(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand this is deleted because we don't need get_dist_dependency_conflicts anymore. or is there other any reason?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ya the function, get_dist_dependency_conflicts has been fully removed and we no longer pull dependencies from the dist.
def test_instruments_without_fastapi_installed(self, mock_version): # pylint: disable=no-self-use | ||
mock_version.side_effect = mock_version_without_fastapi | ||
@patch("opentelemetry.instrumentation.auto_instrumentation._load._logger") | ||
def test_instruments_without_fastapi_installed(self, mock_logger): # pylint: disable=no-self-use |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would you open to write similar test to kafka since it's the instrumentation lib stated in your issue?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ya I can work on that. I am at a company conference this week but will try to get to it next week.
c4b965b
to
7796556
Compare
I added some testing but stopped short of the full auto instrumentation test. I stopped short because the maintainer of kafka-python has come back and is now releasing updates again. The maintainer of kafka-python-ng is reccomending switching back to kafka-python and will be archiving kafka-python-ng soon (kafka-python-ng/kafka-python-ng#210 (comment)). These two packages were the reason this whole bug came about. But in a future PR (very soon) I'll be back with an update to the kafka-python instrumentation so it will support py312 and removal of the kafka-python-ng part of this instrumentation. In that vein, I don't think we need to add a test for a use case that will no longer happen here shortly. However, i still believe this PR should be merged and pushed out as I think using the same dependency resolver everywhere is the better option long term as there is one other instrumentation that also has this same behavior. cc @xrmx |
7fa0e85
to
97db979
Compare
psycopg2 / psycopg2-binary won't go away so we can write a test case for that |
Ok ill take a look at those tomorrow... hopefully. :) |
97db979
to
379a9f2
Compare
|
||
|
||
|
||
class TestPsycopg2InstrumentationDependencies(TestCase): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@emdneto, I think i got it here.
I added some tests first to make sure that the instrumentation_dependencies functions handle both, one or none installed.
The last test, test_instruments_with_psycopg2_installed, tests higher up in the auto instrumentation flow to make sure that the individual error around one package working but not the other doesn't happen again.
…instrumentation does
…re auto instrumentation works for both
214f9fe
to
92d697a
Compare
Description
In order for the auto instrumentation to use the same dependency checker as the instrumentation itself, I introduce an exception that allows for an early exit from instrument function through the distro and back to the _load.
Fixes #3201
Type of change
How Has This Been Tested?
Does This PR Require a Core Repo Change?
Checklist:
See contributing.md for styleguide, changelog guidelines, and more.