-
Notifications
You must be signed in to change notification settings - Fork 467
feat: major version 4.0 #14938
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
base: main
Are you sure you want to change the base?
feat: major version 4.0 #14938
Conversation
This change removes the `cassandra` contrib package, which is only tested on the to-be-removed Python 3.8 runtime.
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 245 ± 5 ms. The average import time from base is: 241 ± 4 ms. The import time difference between this PR and base is: 3.7 ± 0.2 ms. Import time breakdownThe following import paths have appeared:
|
Performance SLOsComparing candidate 4.0-breaking-changes (c8f48e7) with baseline main (4d812d8) 📈 Performance Regressions (1 suite)📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 4.295µs (SLO: <10.000µs 📉 -57.1%) vs baseline: +1.0% Memory: ✅ 37.572MB (SLO: <39.000MB -3.7%) vs baseline: +4.7% ✅ ospathbasename_noaspectTime: ✅ 1.088µs (SLO: <10.000µs 📉 -89.1%) vs baseline: +0.7% Memory: ✅ 37.532MB (SLO: <39.000MB -3.8%) vs baseline: +4.7% ✅ ospathjoin_aspectTime: ✅ 6.346µs (SLO: <10.000µs 📉 -36.5%) vs baseline: +2.2% Memory: ✅ 37.552MB (SLO: <39.000MB -3.7%) vs baseline: +4.9% ✅ ospathjoin_noaspectTime: ✅ 2.300µs (SLO: <10.000µs 📉 -77.0%) vs baseline: +0.3% Memory: ✅ 37.591MB (SLO: <39.000MB -3.6%) vs baseline: +5.3% ✅ ospathnormcase_aspectTime: ✅ 3.562µs (SLO: <10.000µs 📉 -64.4%) vs baseline: +1.1% Memory: ✅ 37.552MB (SLO: <39.000MB -3.7%) vs baseline: +4.9% ✅ ospathnormcase_noaspectTime: ✅ 0.572µs (SLO: <10.000µs 📉 -94.3%) vs baseline: -1.3% Memory: ✅ 37.532MB (SLO: <39.000MB -3.8%) vs baseline: +4.8% ✅ ospathsplit_aspectTime: ✅ 4.835µs (SLO: <10.000µs 📉 -51.7%) vs baseline: -0.9% Memory: ✅ 37.631MB (SLO: <39.000MB -3.5%) vs baseline: +4.5% ✅ ospathsplit_noaspectTime: ✅ 1.602µs (SLO: <10.000µs 📉 -84.0%) vs baseline: +0.8% Memory: ✅ 37.631MB (SLO: <39.000MB -3.5%) vs baseline: +5.0% ✅ ospathsplitdrive_aspectTime: ✅ 3.673µs (SLO: <10.000µs 📉 -63.3%) vs baseline: -1.4% Memory: ✅ 37.493MB (SLO: <39.000MB -3.9%) vs baseline: +4.4% ✅ ospathsplitdrive_noaspectTime: ✅ 0.699µs (SLO: <10.000µs 📉 -93.0%) vs baseline: -0.1% Memory: ✅ 37.631MB (SLO: <39.000MB -3.5%) vs baseline: +5.0% ✅ ospathsplitext_aspectTime: ✅ 5.376µs (SLO: <10.000µs 📉 -46.2%) vs baseline: 📈 +17.6% Memory: ✅ 37.493MB (SLO: <39.000MB -3.9%) vs baseline: +4.4% ✅ ospathsplitext_noaspectTime: ✅ 1.380µs (SLO: <10.000µs 📉 -86.2%) vs baseline: ~same Memory: ✅ 37.572MB (SLO: <39.000MB -3.7%) vs baseline: +4.7% 🟡 Near SLO Breach (5 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.387ms (SLO: <22.300ms -8.6%) vs baseline: -0.6% Memory: ✅ 66.189MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +4.8% ✅ exception-replay-enabledTime: ✅ 1.339ms (SLO: <1.450ms -7.7%) vs baseline: ~same Memory: ✅ 64.301MB (SLO: <67.000MB -4.0%) vs baseline: +4.8% ✅ iastTime: ✅ 20.482ms (SLO: <22.250ms -7.9%) vs baseline: ~same Memory: ✅ 66.086MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.8% ✅ profilerTime: ✅ 15.573ms (SLO: <16.550ms -5.9%) vs baseline: ~same Memory: ✅ 54.023MB (SLO: <54.500MB 🟡 -0.9%) vs baseline: +4.8% ✅ resource-renamingTime: ✅ 20.543ms (SLO: <21.750ms -5.5%) vs baseline: +0.2% Memory: ✅ 66.156MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +4.9% ✅ span-code-originTime: ✅ 25.343ms (SLO: <28.200ms 📉 -10.1%) vs baseline: -0.4% Memory: ✅ 67.246MB (SLO: <69.500MB -3.2%) vs baseline: +5.1% ✅ tracerTime: ✅ 20.445ms (SLO: <21.750ms -6.0%) vs baseline: -0.1% Memory: ✅ 66.153MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +4.9% ✅ tracer-and-profilerTime: ✅ 22.573ms (SLO: <23.500ms -3.9%) vs baseline: -0.8% Memory: ✅ 67.894MB (SLO: <68.000MB 🟡 -0.2%) vs baseline: +5.0% ✅ tracer-dont-create-db-spansTime: ✅ 19.187ms (SLO: <21.500ms 📉 -10.8%) vs baseline: -0.9% Memory: ✅ 66.157MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +5.1% ✅ tracer-minimalTime: ✅ 16.627ms (SLO: <17.500ms -5.0%) vs baseline: -0.4% Memory: ✅ 66.119MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +5.0% ✅ tracer-nativeTime: ✅ 20.456ms (SLO: <21.750ms -5.9%) vs baseline: ~same Memory: ✅ 67.568MB (SLO: <72.500MB -6.8%) vs baseline: +4.5% ✅ tracer-no-cachesTime: ✅ 18.460ms (SLO: <19.650ms -6.1%) vs baseline: ~same Memory: ✅ 66.128MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +4.9% ✅ tracer-no-databasesTime: ✅ 18.797ms (SLO: <20.100ms -6.5%) vs baseline: ~same Memory: ✅ 66.085MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +5.0% ✅ tracer-no-middlewareTime: ✅ 20.109ms (SLO: <21.500ms -6.5%) vs baseline: -0.4% Memory: ✅ 66.073MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.9% ✅ tracer-no-templatesTime: ✅ 20.244ms (SLO: <22.000ms -8.0%) vs baseline: -0.5% Memory: ✅ 66.170MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.0% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.218ms (SLO: <19.850ms -8.2%) vs baseline: +0.7% Memory: ✅ 66.132MB (SLO: <66.500MB 🟡 -0.6%) vs baseline: +5.0% ✅ errortracking-enabled-userTime: ✅ 18.048ms (SLO: <19.400ms -7.0%) vs baseline: -0.1% Memory: ✅ 66.056MB (SLO: <66.500MB 🟡 -0.7%) vs baseline: +4.8% ✅ tracer-enabledTime: ✅ 18.199ms (SLO: <19.450ms -6.4%) vs baseline: +0.8% Memory: ✅ 65.937MB (SLO: <66.500MB 🟡 -0.8%) vs baseline: +4.9% 🟡 errortrackingflasksqli - 6/6✅ errortracking-enabled-allTime: ✅ 2.096ms (SLO: <2.300ms -8.9%) vs baseline: +1.2% Memory: ✅ 52.632MB (SLO: <53.500MB 🟡 -1.6%) vs baseline: +5.3% ✅ errortracking-enabled-userTime: ✅ 2.078ms (SLO: <2.250ms -7.6%) vs baseline: ~same Memory: ✅ 52.632MB (SLO: <53.500MB 🟡 -1.6%) vs baseline: +5.4% ✅ tracer-enabledTime: ✅ 2.058ms (SLO: <2.300ms 📉 -10.5%) vs baseline: -0.6% Memory: ✅ 52.573MB (SLO: <53.500MB 🟡 -1.7%) vs baseline: +5.2% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.579ms (SLO: <4.750ms -3.6%) vs baseline: -0.7% Memory: ✅ 62.313MB (SLO: <65.000MB -4.1%) vs baseline: +4.9% ✅ appsec-postTime: ✅ 6.602ms (SLO: <6.750ms -2.2%) vs baseline: -0.6% Memory: ✅ 62.037MB (SLO: <65.000MB -4.6%) vs baseline: +4.3% ✅ appsec-telemetryTime: ✅ 4.582ms (SLO: <4.750ms -3.5%) vs baseline: -0.5% Memory: ✅ 62.395MB (SLO: <65.000MB -4.0%) vs baseline: +5.0% ✅ debuggerTime: ✅ 1.853ms (SLO: <2.000ms -7.3%) vs baseline: -0.5% Memory: ✅ 45.245MB (SLO: <47.000MB -3.7%) vs baseline: +4.7% ✅ iast-getTime: ✅ 1.863ms (SLO: <2.000ms -6.9%) vs baseline: -0.2% Memory: ✅ 42.255MB (SLO: <49.000MB 📉 -13.8%) vs baseline: +4.9% ✅ profilerTime: ✅ 1.908ms (SLO: <2.100ms -9.1%) vs baseline: -0.3% Memory: ✅ 46.475MB (SLO: <47.000MB 🟡 -1.1%) vs baseline: +4.4% ✅ resource-renamingTime: ✅ 3.359ms (SLO: <3.650ms -8.0%) vs baseline: -0.6% Memory: ✅ 52.687MB (SLO: <53.500MB 🟡 -1.5%) vs baseline: +5.1% ✅ tracerTime: ✅ 3.346ms (SLO: <3.650ms -8.3%) vs baseline: -0.6% Memory: ✅ 52.699MB (SLO: <53.500MB 🟡 -1.5%) vs baseline: +5.1% ✅ tracer-nativeTime: ✅ 3.346ms (SLO: <3.650ms -8.3%) vs baseline: -0.3% Memory: ✅ 54.206MB (SLO: <60.000MB -9.7%) vs baseline: +5.0% 🟡 flasksqli - 6/6✅ appsec-enabledTime: ✅ 3.940ms (SLO: <4.200ms -6.2%) vs baseline: -0.7% Memory: ✅ 62.266MB (SLO: <66.000MB -5.7%) vs baseline: +4.6% ✅ iast-enabledTime: ✅ 2.442ms (SLO: <2.800ms 📉 -12.8%) vs baseline: ~same Memory: ✅ 59.120MB (SLO: <60.000MB 🟡 -1.5%) vs baseline: +4.6% ✅ tracer-enabledTime: ✅ 2.051ms (SLO: <2.250ms -8.8%) vs baseline: -0.5% Memory: ✅ 52.612MB (SLO: <54.500MB -3.5%) vs baseline: +4.8%
|
## Motivation The mongoengine integration does not generate any spans and only supports attaching a Pin object to the underlying pymongo client. Since we're deprecating the Pin mechanism and pymongo already fully supports the needed functionality, maintaining the mongoengine integration is redundant. ## Description This PR removes the mongoengine integration from ddtrace. The pymongo integration, which is enabled by default, will continue to provide tracing for applications using mongoengine, as mongoengine internally uses pymongo. The only notable change is that users can no longer set a Pin on the mongoengine client. Instead, they should configure the Pin directly on the pymongo client if needed. Support for the Pin API will be removed in a future release. ## Checklist - [x] PR author has checked that all the criteria below are met - The PR description includes an overview of the change - The PR description articulates the motivation for the change - The change includes tests OR the PR description describes a testing strategy - The PR description notes risks associated with the change, if any - Newly-added code is easy to change - The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) - The change includes or references documentation updates if necessary - Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [ ] Reviewer has checked that all the criteria below are met - Title is accurate - All changes are related to the pull request's stated goal - Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - Testing strategy adequately addresses listed risks - Newly-added code is easy to change - Release note makes sense to a user of the library - If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - 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)
This change removes the deprecated `opentracer` package from ddtrace. Note the base branch, a staging area for breaking changes slated for 4.0. --------- Co-authored-by: brettlangdon <[email protected]>
This change removes deprecated methods and method parameters from the `Span` class. Note the base branch, a staging area for breaking changes slated for 4.0. --------- Co-authored-by: brettlangdon <[email protected]>
This change removes support and testing for Python 3.8, which reached its end-of-life in late 2024 and was deprecated in ddtrace in #14890. It also deprecates support for Python 3.9, which reached its end-of-life recently. This includes removal of the `cassandra` integration, which is only tested under Python 3.8. Note that the base branch is not `main`, but a branch on which we can stage the breaking changes for the 4.0 release. Depends on DataDog/system-tests#5547 --------- Co-authored-by: Sam Brenner <[email protected]> Co-authored-by: Gabriele N. Tornetta <[email protected]>
This change removes the deprecated `freezegun` integration from ddtrace. Note the base branch, a staging area for breaking changes slated for 4.0. --------- Co-authored-by: Vlad Scherbich <[email protected]> Co-authored-by: Taegyun Kim <[email protected]>
This change removes the deprecated functionality that controls ingestion via analytics. Note the base branch, a staging area for breaking changes slated for 4.0.
This change replaces `ddtrace.settings` with `ddtrace.internal.settings` because we've decided to disallow settings adjustment via code, preferring environment variable configuration. Note the base branch, a staging area for breaking changes slated for 4.0.
This change removes deprecated attributes from the `ddtrace.trace` and `ddtrace._trace` modules. Note the base branch, a staging area for breaking changes slated for 4.0. --------- Co-authored-by: Brett Langdon <[email protected]>
|
system-tests fix DataDog/system-tests#5631 |
## Description [MLOB-4128] Drops the optional tiktoken dependency from ddtrace. Also removes tiktoken estimation of tokens from the openai integration. This was only used by customers that explicitly rejected streamed token metrics from streamed chat/responses, which is an extreme minority of users. We made the call that this optional dependency wasn't worth the maintenance burden (difficulty in updating python versions, other third party libraries, etc) in our ddtrace 4.0 major release. We'll just default to estimating the token count with our super simple heuristic if token counts are not provided by openai. This PR also updates testing to test openai==2.2.0. <!-- Provide an overview of the change and motivation for the change --> ## Testing <!-- Describe your testing strategy or note what tests are included --> ## Risks <!-- Note any risks associated with this change, or "None" if no risks --> ## Additional Notes <!-- Any other information that would be helpful for reviewers --> [MLOB-4128]: https://datadoghq.atlassian.net/browse/MLOB-4128?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
## Description [MLOB-4217] Removes `submit_evaluation_for` method in favor of `submit_evaluation` which should be released in ddtrace 4.0. ## Testing <!-- Describe your testing strategy or note what tests are included --> ## Risks <!-- Note any risks associated with this change, or "None" if no risks --> ## Additional Notes <!-- Any other information that would be helpful for reviewers --> [MLOB-4217]: https://datadoghq.atlassian.net/browse/MLOB-4217?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[MLOB-4040] ## Description Removes the google_generativeai integration. This is end of life and replaced by the google_genai library and integration, as recommended by google's official genai documentation. This is part of our ddtrace 4.0 release. [MLOB-4040]: https://datadoghq.atlassian.net/browse/MLOB-4040?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
## Description Removes deprecated methods. ## Testing <!-- Describe your testing strategy or note what tests are included --> ## Risks <!-- Note any risks associated with this change, or "None" if no risks --> ## Additional Notes It seems like there was still some usage of these APIs internally, or they were added after the deprecation went in.
This change removes the deprecated `non_active_span` parameter to `HttpPropagator.inject`. Note the base branch, a staging area for breaking changes slated for 4.0. --------- Co-authored-by: brettlangdon <[email protected]>
## Description <!-- Provide an overview of the change and motivation for the change --> ## Testing <!-- Describe your testing strategy or note what tests are included --> ## Risks <!-- Note any risks associated with this change, or "None" if no risks --> ## Additional Notes <!-- Any other information that would be helpful for reviewers --> Co-authored-by: Emmett Butler <[email protected]>
Co-authored-by: Emmett Butler <[email protected]>
This branch will become the new
main, andmainwill become the last 3.x minor release.