-
Notifications
You must be signed in to change notification settings - Fork 412
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
fix(profiling): export lock acquire/release call location and variable name [backport 2.10] #10031
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…e name (#9615) We used to export "<filename>:<line_number>" for the name of a lock. Whenever lock is initialized, we traverse the stack frame to populate these. However, we can't get the variable name of the lock as we haven't yet fully initialized and assigned it to a variable. Now we traverse the frame whenever `_acquire/_release` is called to get the caller information. Also, when `_acquire` is called for the first time, we inspect local and global variables in the caller frame to find the name of this lock variable. With `DD_PROFILING_LOCK_NAME_INSPECT_DIR` enabled, the lock profiler also inspects attributes of local and global variables to find the name of the lock. This behavior can be turned off with the flag. - [x] Change(s) are motivated and described in the PR description - [x] Testing strategy is described if automated tests are not included in the PR - [x] Risks are described (performance impact, potential for breakage, maintainability) - [x] Change is maintainable (easy to change, telemetry, documentation) - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed or label `changelog/no-changelog` is set - [x] Documentation is included (in-code, generated user docs, [public corp docs](https://github.com/DataDog/documentation/)) - [x] Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) - [x] If this PR changes the public interface, I've notified `@DataDog/apm-tees`. - [x] Title is accurate - [x] All changes are related to the pull request's stated goal - [x] Description motivates each change - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - [x] Testing strategy adequately addresses listed risks - [x] Change is maintainable (easy to change, telemetry, documentation) - [x] Release note makes sense to a user of the library - [x] Author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - [x] Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
taegyunkim
added
the
changelog/no-changelog
A changelog entry is not required for this PR.
label
Aug 1, 2024
Datadog ReportBranch report: ✅ 0 Failed, 391 Passed, 1199 Skipped, 33m 24.37s Total duration (47m 23.42s time saved) |
sanchda
approved these changes
Aug 1, 2024
taegyunkim
changed the title
fix(profiling): export lock acquire/release call location and variable name
fix(profiling): export lock acquire/release call location and variable name [backport 2.10]
Aug 2, 2024
brettlangdon
approved these changes
Aug 2, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Manual backport of #9615 to 2.10
We used to export ":<line_number>" for the name of a lock. Whenever lock is initialized, we traverse the stack frame to populate these. However, we can't get the variable name of the lock as we haven't yet fully initialized and assigned it to a variable.
Now we traverse the frame whenever
_acquire/_release
is called to get the caller information. Also, when_acquire
is called for the first time, we inspect local and global variables in the caller frame to find the name of this lock variable. WithDD_PROFILING_LOCK_NAME_INSPECT_DIR
enabled, the lock profiler also inspects attributes of local and global variables to find the name of the lock. This behavior can be turned off with the flag.Checklist
changelog/no-changelog
is set@DataDog/apm-tees
.Reviewer Checklist
policy