-
Notifications
You must be signed in to change notification settings - Fork 395
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
chore(internal): core api #6202
Merged
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
emmettbutler
added
the
changelog/no-changelog
A changelog entry is not required for this PR.
label
Jun 23, 2023
since this API is not used anywhere, this attribute access will not fail
16 tasks
tabgok
approved these changes
Jun 30, 2023
mabdinur
approved these changes
Jul 6, 2023
emmettbutler
added a commit
that referenced
this pull request
Jul 12, 2023
This pull request replaces `ddtrace.internal._context` with `ddtrace.internal.core`, which was added in #6202. In an upcoming pull request, I plan to entirely remove the need for the setters and getters in `core` to accept an optional `span` argument, so you can think of that argument as a stopgap that enables incremental change. There are a few minor test changes related to where context data lives relative to spans, and the `_appsec_request_context` is changed significantly to use the core API. Existing tests are enough to cover this change, because there's no new functionality introduced. ## Changes * Replaces all uses of `ddtrace.internal._context` with uses of `ddtrace.internal.core`, a new module with more functionality * Updates `_asm_request_context`'s context management backend to use the core API as opposed to a bare `ContextVar` * Changes `ddtrace.contrib.subprocess.patch` to store contextual data without spans, because cross-process context parenting is simpler without spans * Updates `ddtrace.opentelemetry._span` to use the core API * Updates `test_ctx_api` to make explicit its dependence on span lifetimes for context propagation * Removes `ddtrace.internal._context` ## Checklist - [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] Risk is outlined (performance impact, potential for breakage, maintainability, etc). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed. If no release note is required, add label `changelog/no-changelog`. - [x] Documentation is included (in-code, generated user docs, [public corp docs](https://github.com/DataDog/documentation/)). - [x] Backport labels are set (if [applicable](../docs/contributing.rst#release-branch-maintenance)) ## Reviewer Checklist - [x] Title is accurate. - [x] No unnecessary changes are introduced. - [x] Description motivates each change. - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes unless absolutely necessary. - [x] Testing strategy adequately addresses listed risk(s). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] Release note makes sense to a user of the library. - [x] Reviewer has explicitly 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](../docs/contributing.rst#release-branch-maintenance) --------- Co-authored-by: Federico Mon <federico.mon@datadoghq.com> Co-authored-by: Zachary Groves <32471391+ZStriker19@users.noreply.github.com>
romainkomorndatadog
pushed a commit
that referenced
this pull request
Aug 8, 2023
This pull request implements the "Core API", providing an interface to the creation of context trees with which product code can store data. This API will be used in the future as the main interface between products and contrib integrations. To enable compatibility with existing tests and usage patterns in which contexts are assumed to have the same lifetime as certain spans, this implementation of the Core API allows `ExecutionContext` instances to be attached to spans. Building the API this way allows incremental changes to be merged without requiring hundreds of tests to change their code. Planned future changes will break the temporal dependency between spans and contexts. In this change, the Core API isn't used anywhere. #6200 will replace `ddtrace.internal._context` with this API.
romainkomorndatadog
pushed a commit
that referenced
this pull request
Aug 8, 2023
This pull request replaces `ddtrace.internal._context` with `ddtrace.internal.core`, which was added in #6202. In an upcoming pull request, I plan to entirely remove the need for the setters and getters in `core` to accept an optional `span` argument, so you can think of that argument as a stopgap that enables incremental change. There are a few minor test changes related to where context data lives relative to spans, and the `_appsec_request_context` is changed significantly to use the core API. Existing tests are enough to cover this change, because there's no new functionality introduced. ## Changes * Replaces all uses of `ddtrace.internal._context` with uses of `ddtrace.internal.core`, a new module with more functionality * Updates `_asm_request_context`'s context management backend to use the core API as opposed to a bare `ContextVar` * Changes `ddtrace.contrib.subprocess.patch` to store contextual data without spans, because cross-process context parenting is simpler without spans * Updates `ddtrace.opentelemetry._span` to use the core API * Updates `test_ctx_api` to make explicit its dependence on span lifetimes for context propagation * Removes `ddtrace.internal._context` ## Checklist - [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] Risk is outlined (performance impact, potential for breakage, maintainability, etc). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed. If no release note is required, add label `changelog/no-changelog`. - [x] Documentation is included (in-code, generated user docs, [public corp docs](https://github.com/DataDog/documentation/)). - [x] Backport labels are set (if [applicable](../docs/contributing.rst#release-branch-maintenance)) ## Reviewer Checklist - [x] Title is accurate. - [x] No unnecessary changes are introduced. - [x] Description motivates each change. - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes unless absolutely necessary. - [x] Testing strategy adequately addresses listed risk(s). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] Release note makes sense to a user of the library. - [x] Reviewer has explicitly 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](../docs/contributing.rst#release-branch-maintenance) --------- Co-authored-by: Federico Mon <federico.mon@datadoghq.com> Co-authored-by: Zachary Groves <32471391+ZStriker19@users.noreply.github.com>
18 tasks
majorgreys
pushed a commit
that referenced
this pull request
Jan 3, 2024
This pull request deprecates the `span` arguments on `ExecutionContext` methods to indicate that they are only for backward compatibility and not meant to be used by newly written code. This has been the plan since the beginning of the core API in #6202 (comment). Deprecations are usually used for non-internal functionality, but I think a deprecation is appropriate in this internal case as we encourage broader usage of the core API. ## Checklist - [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] Risk is outlined (performance impact, potential for breakage, maintainability, etc). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed. If no release note is required, add label `changelog/no-changelog`. - [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)) ## Reviewer Checklist - [x] Title is accurate. - [x] No unnecessary changes are introduced. - [x] Description motivates each change. - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes unless absolutely necessary. - [x] Testing strategy adequately addresses listed risk(s). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] Release note makes sense to a user of the library. - [x] Reviewer has explicitly 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) - [x] If this PR touches code that signs or publishes builds or packages, or handles credentials of any kind, I've requested a review from `@DataDog/security-design-and-guidance`. - [x] This PR doesn't touch any of that.
ZStriker19
pushed a commit
to haozhun/dd-trace-py
that referenced
this pull request
Jan 8, 2024
…aDog#7957) This pull request deprecates the `span` arguments on `ExecutionContext` methods to indicate that they are only for backward compatibility and not meant to be used by newly written code. This has been the plan since the beginning of the core API in DataDog#6202 (comment). Deprecations are usually used for non-internal functionality, but I think a deprecation is appropriate in this internal case as we encourage broader usage of the core API. ## Checklist - [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] Risk is outlined (performance impact, potential for breakage, maintainability, etc). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed. If no release note is required, add label `changelog/no-changelog`. - [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)) ## Reviewer Checklist - [x] Title is accurate. - [x] No unnecessary changes are introduced. - [x] Description motivates each change. - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes unless absolutely necessary. - [x] Testing strategy adequately addresses listed risk(s). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] Release note makes sense to a user of the library. - [x] Reviewer has explicitly 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) - [x] If this PR touches code that signs or publishes builds or packages, or handles credentials of any kind, I've requested a review from `@DataDog/security-design-and-guidance`. - [x] This PR doesn't touch any of that.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This pull request implements the "Core API", providing an interface to the creation of context trees with which product code can store data. This API will be used in the future as the main interface between products and contrib integrations.
To enable compatibility with existing tests and usage patterns in which contexts are assumed to have the same lifetime as certain spans, this implementation of the Core API allows
ExecutionContext
instances to be attached to spans. Building the API this way allows incremental changes to be merged without requiring hundreds of tests to change their code. Planned future changes will break the temporal dependency between spans and contexts.In this change, the Core API isn't used anywhere. #6200 will replace
ddtrace.internal._context
with this API.Checklist
changelog/no-changelog
.Reviewer Checklist