Skip to content

refactor: resolve config-telemetry circular reference #12820

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

Merged
merged 8 commits into from
Mar 26, 2025

Conversation

P403n1x87
Copy link
Contributor

@P403n1x87 P403n1x87 commented Mar 20, 2025

We refactor the interaction between telemetry and configuration to resolve the circular import issue between these two components.

We also extend the product plugin interface to export an optional config property. When present, and of type DDConfig, its configuration items are automatically reported via telemetry.

Checklist

  • 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
  • The change includes or references documentation updates if necessary
  • Backport labels are set (if applicable)

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 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

@P403n1x87 P403n1x87 requested a review from mabdinur March 20, 2025 18:28
Copy link
Contributor

github-actions bot commented Mar 20, 2025

CODEOWNERS have been resolved as:

ddtrace/settings/_agent.py                                              @DataDog/apm-core-python
ddtrace/_logger.py                                                      @DataDog/apm-core-python
ddtrace/_trace/tracer.py                                                @DataDog/apm-sdk-api-python
ddtrace/contrib/internal/aiohttp/patch.py                               @DataDog/apm-core-python @DataDog/apm-idm-python
ddtrace/contrib/internal/wsgi/wsgi.py                                   @DataDog/apm-core-python @DataDog/apm-idm-python
ddtrace/debugging/_products/exception_replay.py                         @DataDog/debugger-python
ddtrace/internal/README.md                                              @DataDog/python-guild @DataDog/apm-core-python
ddtrace/internal/agent.py                                               @DataDog/apm-core-python
ddtrace/internal/appsec/product.py                                      @DataDog/asm-python
ddtrace/internal/products.py                                            @DataDog/apm-core-python
ddtrace/internal/telemetry/__init__.py                                  @DataDog/apm-core-python
ddtrace/internal/telemetry/writer.py                                    @DataDog/apm-core-python
ddtrace/settings/__init__.py                                            @DataDog/apm-core-python
ddtrace/settings/_config.py                                             @DataDog/apm-core-python
ddtrace/settings/_core.py                                               @DataDog/apm-core-python
ddtrace/settings/_telemetry.py                                          @DataDog/apm-core-python
ddtrace/settings/asm.py                                                 @DataDog/asm-python
ddtrace/settings/crashtracker.py                                        @DataDog/apm-core-python
ddtrace/settings/dynamic_instrumentation.py                             @DataDog/debugger-python
ddtrace/settings/errortracking.py                                       @DataDog/apm-core-python
ddtrace/settings/exception_replay.py                                    @DataDog/apm-core-python
ddtrace/settings/peer_service.py                                        @DataDog/apm-core-python
ddtrace/settings/profiling.py                                           @DataDog/profiling-python
ddtrace/settings/symbol_db.py                                           @DataDog/apm-core-python
tests/ci_visibility/api_client/test_ci_visibility_api_client.py         @DataDog/ci-app-libraries
tests/ci_visibility/test_ci_visibility.py                               @DataDog/ci-app-libraries
tests/ci_visibility/util.py                                             @DataDog/ci-app-libraries
tests/contrib/dbapi/test_dbapi.py                                       @DataDog/apm-core-python @DataDog/apm-idm-python
tests/contrib/dbapi/test_dbapi_appsec.py                                @DataDog/asm-python
tests/contrib/dbapi_async/test_dbapi_async.py                           @DataDog/apm-core-python @DataDog/apm-idm-python
tests/debugging/test_config.py                                          @DataDog/debugger-python
tests/internal/test_settings.py                                         @DataDog/apm-core-python
tests/telemetry/test_writer.py                                          @DataDog/apm-python
tests/tracer/test_agent.py                                              @DataDog/apm-sdk-api-python
tests/tracer/test_global_config.py                                      @DataDog/apm-sdk-api-python
tests/tracer/test_settings.py                                           @DataDog/apm-sdk-api-python
tests/tracer/test_trace_utils.py                                        @DataDog/apm-sdk-api-python
tests/tracer/test_tracer.py                                             @DataDog/apm-sdk-api-python

Copy link
Contributor

github-actions bot commented Mar 20, 2025

Bootstrap import analysis

Comparison of import times between this PR and main.

Summary

The average import time in this PR is: 230 ± 3 ms.

The average import time in main is: 231 ± 3 ms.

The import time difference between this PR and main is: -1.5 ± 0.1 ms.

Import time breakdown

The following import paths have appeared:

ddtrace.auto 93.420 ms (40.64%)
ddtrace 93.420 ms (40.64%)
ddtrace._logger 82.902 ms (36.07%)
ddtrace.internal.telemetry 82.902 ms (36.07%)
ddtrace.internal.telemetry.writer 81.139 ms (35.30%)
ddtrace.internal.utils.version 28.245 ms (12.29%)
ddtrace.vendor.packaging.version 27.607 ms (12.01%)
ddtrace.vendor.packaging 25.288 ms (11.00%)
ddtrace.vendor 11.583 ms (5.04%)
ddtrace.internal.module 11.434 ms (4.97%)
ddtrace.internal.wrapping.context 10.661 ms (4.64%)
ddtrace.internal.wrapping 9.708 ms (4.22%)
bytecode 6.821 ms (2.97%)
bytecode.bytecode 4.086 ms (1.78%)
bytecode.flags 3.469 ms (1.51%)
bytecode.instr 2.974 ms (1.29%)
bytecode.utils 0.124 ms (0.05%)
bytecode.cfg 2.248 ms (0.98%)
bytecode.concrete 0.923 ms (0.40%)
bytecode.version 0.240 ms (0.10%)
ddtrace.internal.wrapping.asyncs 1.444 ms (0.63%)
ddtrace.internal.wrapping.generators 0.712 ms (0.31%)
ddtrace.internal.assembly 0.368 ms (0.16%)
contextvars 0.279 ms (0.12%)
_contextvars 0.152 ms (0.07%)
ddtrace.vendor.packaging._structures 0.305 ms (0.13%)
ddtrace.version 0.241 ms (0.10%)
ddtrace._version 0.238 ms (0.10%)
http.client 21.255 ms (9.25%)
email.parser 13.750 ms (5.98%)
email.feedparser 13.350 ms (5.81%)
email._policybase 12.251 ms (5.33%)
email.utils 9.571 ms (4.16%)
socket 3.053 ms (1.33%)
selectors 0.709 ms (0.31%)
select 0.182 ms (0.08%)
_socket 0.520 ms (0.23%)
array 0.277 ms (0.12%)
errno 0.061 ms (0.03%)
urllib.parse 2.474 ms (1.08%)
ipaddress 1.272 ms (0.55%)
urllib 0.129 ms (0.06%)
email._parseaddr 2.016 ms (0.88%)
calendar 1.772 ms (0.77%)
locale 0.833 ms (0.36%)
_locale 0.080 ms (0.03%)
random 1.188 ms (0.52%)
bisect 0.288 ms (0.13%)
_bisect 0.149 ms (0.06%)
math 0.201 ms (0.09%)
_sha2 0.163 ms (0.07%)
_random 0.153 ms (0.07%)
datetime 0.373 ms (0.16%)
_datetime 0.235 ms (0.10%)
email.header 2.390 ms (1.04%)
email.base64mime 0.696 ms (0.30%)
base64 0.567 ms (0.25%)
struct 0.322 ms (0.14%)
_struct 0.196 ms (0.09%)
email.charset 0.560 ms (0.24%)
email.encoders 0.290 ms (0.13%)
quopri 0.162 ms (0.07%)
binascii 0.289 ms (0.13%)
email.quoprimime 0.241 ms (0.10%)
email.errors 0.573 ms (0.25%)
email 0.143 ms (0.06%)
ssl 4.238 ms (1.84%)
_ssl 1.571 ms (0.68%)
email.message 0.898 ms (0.39%)
email._encoded_words 0.269 ms (0.12%)
email.iterators 0.132 ms (0.06%)
http 0.775 ms (0.34%)
ddtrace.internal.utils.http 15.101 ms (6.57%)
dataclasses 7.071 ms (3.08%)
inspect 6.249 ms (2.72%)
ast 2.306 ms (1.00%)
_ast 1.188 ms (0.52%)
dis 1.466 ms (0.64%)
opcode 0.583 ms (0.25%)
_opcode 0.153 ms (0.07%)
importlib.machinery 0.230 ms (0.10%)
importlib 0.167 ms (0.07%)
copy 0.196 ms (0.09%)
ddtrace.internal.http 5.450 ms (2.37%)
ddtrace.internal.runtime 4.232 ms (1.84%)
ddtrace.internal.forksafe 2.666 ms (1.16%)
wrapt 2.418 ms (1.05%)
wrapt.__wrapt__ 0.881 ms (0.38%)
wrapt.wrappers 0.417 ms (0.18%)
wrapt._wrappers 0.271 ms (0.12%)
wrapt.importer 0.515 ms (0.22%)
importlib.util 0.309 ms (0.13%)
importlib._abc 0.190 ms (0.08%)
wrapt.decorators 0.497 ms (0.22%)
wrapt.arguments 0.122 ms (0.05%)
wrapt.patches 0.180 ms (0.08%)
wrapt.weakrefs 0.145 ms (0.06%)
uuid 1.334 ms (0.58%)
platform 0.581 ms (0.25%)
_wmi 0.075 ms (0.03%)
_uuid 0.256 ms (0.11%)
ddtrace.internal.runtime.container 1.005 ms (0.44%)
ddtrace.internal.utils 0.354 ms (0.15%)
ddtrace.internal.utils.cache 0.218 ms (0.09%)
ddtrace.internal.constants 0.181 ms (0.08%)
ddtrace.internal.uds 0.156 ms (0.07%)
ddtrace.constants 0.151 ms (0.07%)
ddtrace.settings._telemetry 5.850 ms (2.55%)
ddtrace.settings._core 2.314 ms (1.01%)
envier 1.326 ms (0.58%)
envier.env 1.168 ms (0.51%)
ddtrace.internal.native 0.599 ms (0.26%)
ddtrace.internal.native._native 0.408 ms (0.18%)
ddtrace.settings._inferred_base_service 1.785 ms (0.78%)
pathlib 1.207 ms (0.53%)
ntpath 0.494 ms (0.21%)
nt 0.333 ms (0.14%)
_winapi 0.069 ms (0.03%)
fnmatch 0.261 ms (0.11%)
ddtrace.settings 0.989 ms (0.43%)
ddtrace.settings.integration 0.298 ms (0.13%)
ddtrace.internal.utils.attrdict 0.126 ms (0.05%)
ddtrace.settings.exceptions 0.185 ms (0.08%)
ddtrace._hooks 0.184 ms (0.08%)
ddtrace.settings.http 0.167 ms (0.07%)
ddtrace.internal.telemetry.data 3.753 ms (1.63%)
ddtrace.internal.packages 2.671 ms (1.16%)
_sysconfigdata__linux_x86_64-linux-gnu 0.587 ms (0.26%)
ddtrace.settings.third_party 0.329 ms (0.14%)
sysconfig 0.510 ms (0.22%)
ddtrace.internal.hostname 0.242 ms (0.11%)
ddtrace.internal.encoding 1.570 ms (0.68%)
ddtrace.internal.compat 0.967 ms (0.42%)
ddtrace.internal._encoding 0.359 ms (0.16%)
ddtrace.internal.periodic 1.547 ms (0.67%)
ddtrace.internal._threads 0.970 ms (0.42%)
ddtrace.internal.service 0.309 ms (0.13%)
ddtrace.internal.atexit 1.006 ms (0.44%)
signal 0.561 ms (0.24%)
__future__ 0.157 ms (0.07%)
ddtrace.internal.utils.signals 0.118 ms (0.05%)
ddtrace.internal.agent 0.523 ms (0.23%)
ddtrace.settings._agent 0.385 ms (0.17%)
ddtrace.internal.telemetry.metrics 0.437 ms (0.19%)
ddtrace.internal.telemetry.logging 0.403 ms (0.18%)
ddtrace.internal.telemetry.metrics_namespaces 0.342 ms (0.15%)
ddtrace.internal.utils.time 0.267 ms (0.12%)
ddtrace.internal.telemetry.modules 0.256 ms (0.11%)
ddtrace.internal.telemetry.constants 0.508 ms (0.22%)
ddtrace.settings._otel_remapper 0.382 ms (0.17%)
ddtrace.internal.logger 0.300 ms (0.13%)
ddtrace.settings._config 10.517 ms (4.58%)
ddtrace.internal.gitmetadata 6.900 ms (3.00%)
ddtrace.ext.ci 6.578 ms (2.86%)
ddtrace.ext.git 5.706 ms (2.48%)
shutil 3.047 ms (1.33%)
bz2 1.143 ms (0.50%)
_compression 0.408 ms (0.18%)
_bz2 0.395 ms (0.17%)
lzma 0.775 ms (0.34%)
_lzma 0.437 ms (0.19%)
zlib 0.358 ms (0.16%)
subprocess 1.475 ms (0.64%)
fcntl 0.373 ms (0.16%)
_posixsubprocess 0.271 ms (0.12%)
msvcrt 0.110 ms (0.05%)
tempfile 0.522 ms (0.23%)
ddtrace.ext 0.295 ms (0.13%)
ddtrace.internal.schema 0.809 ms (0.35%)
ddtrace.internal.schema.span_attribute_schema 0.495 ms (0.22%)
ddtrace._trace.pin 0.740 ms (0.32%)
ddtrace._trace 0.236 ms (0.10%)
ddtrace.settings.endpoint_config 0.722 ms (0.31%)
ddtrace.internal.utils.retry 0.444 ms (0.19%)
ddtrace.internal.serverless 0.275 ms (0.12%)

The following import paths have disappeared:

ddtrace.auto 93.055 ms (40.48%)
ddtrace 93.055 ms (40.48%)
ddtrace._logger 93.055 ms (40.48%)
ddtrace.settings._core 87.917 ms (38.25%)
ddtrace.settings 87.883 ms (38.23%)
ddtrace.settings._config 86.762 ms (37.75%)
ddtrace.settings._telemetry 41.243 ms (17.94%)
ddtrace.internal.telemetry 41.034 ms (17.85%)
ddtrace.internal.telemetry.writer 40.660 ms (17.69%)
ddtrace.internal.utils.version 30.701 ms (13.36%)
ddtrace.vendor.packaging.version 30.046 ms (13.07%)
ddtrace.vendor.packaging 27.629 ms (12.02%)
ddtrace.vendor 12.858 ms (5.59%)
ddtrace.internal.module 12.706 ms (5.53%)
ddtrace.internal.wrapping.context 11.934 ms (5.19%)
ddtrace.internal.wrapping 10.901 ms (4.74%)
bytecode 8.022 ms (3.49%)
bytecode.bytecode 4.190 ms (1.82%)
bytecode.flags 3.657 ms (1.59%)
bytecode.instr 3.118 ms (1.36%)
bytecode.utils 0.135 ms (0.06%)
bytecode.cfg 3.356 ms (1.46%)
bytecode.concrete 1.948 ms (0.85%)
bytecode.version 0.234 ms (0.10%)
ddtrace.internal.wrapping.asyncs 1.344 ms (0.58%)
ddtrace.internal.wrapping.generators 0.709 ms (0.31%)
ddtrace.internal.assembly 0.465 ms (0.20%)
contextvars 0.285 ms (0.12%)
_contextvars 0.155 ms (0.07%)
ddtrace.vendor.packaging._structures 0.303 ms (0.13%)
ddtrace.version 0.241 ms (0.10%)
ddtrace._version 0.239 ms (0.10%)
ddtrace.internal.telemetry.data 3.895 ms (1.69%)
ddtrace.internal.packages 2.785 ms (1.21%)
_sysconfigdata__linux_x86_64-linux-gnu 0.616 ms (0.27%)
ddtrace.settings.third_party 0.328 ms (0.14%)
sysconfig 0.516 ms (0.22%)
ddtrace.internal.hostname 0.247 ms (0.11%)
ddtrace.internal.periodic 1.558 ms (0.68%)
ddtrace.internal._threads 0.970 ms (0.42%)
ddtrace.internal.service 0.320 ms (0.14%)
ddtrace.internal.atexit 0.949 ms (0.41%)
signal 0.676 ms (0.29%)
ddtrace.internal.utils.signals 0.117 ms (0.05%)
ddtrace.internal.encoding 0.584 ms (0.25%)
ddtrace.internal._encoding 0.352 ms (0.15%)
ddtrace.internal.telemetry.constants 0.568 ms (0.25%)
ddtrace.internal.telemetry.metrics 0.432 ms (0.19%)
ddtrace.internal.agent 0.350 ms (0.15%)
ddtrace.internal.telemetry.metrics_namespaces 0.340 ms (0.15%)
ddtrace.internal.telemetry.logging 0.321 ms (0.14%)
ddtrace.internal.telemetry.modules 0.262 ms (0.11%)
ddtrace.settings.endpoint_config 21.669 ms (9.43%)
ddtrace.internal.utils.http 21.087 ms (9.17%)
http.client 15.210 ms (6.62%)
email.parser 7.381 ms (3.21%)
email.feedparser 7.191 ms (3.13%)
email._policybase 6.169 ms (2.68%)
email.utils 4.684 ms (2.04%)
email._parseaddr 2.119 ms (0.92%)
calendar 1.855 ms (0.81%)
locale 0.984 ms (0.43%)
_locale 0.080 ms (0.03%)
socket 2.114 ms (0.92%)
_socket 0.343 ms (0.15%)
array 0.224 ms (0.10%)
email.header 1.137 ms (0.49%)
email.quoprimime 0.224 ms (0.10%)
email.charset 0.194 ms (0.08%)
email.base64mime 0.120 ms (0.05%)
email.errors 0.502 ms (0.22%)
ssl 5.107 ms (2.22%)
_ssl 1.884 ms (0.82%)
email.message 0.972 ms (0.42%)
email._encoded_words 0.269 ms (0.12%)
email.iterators 0.213 ms (0.09%)
http 0.758 ms (0.33%)
ddtrace.internal.http 2.454 ms (1.07%)
ddtrace.internal.runtime 1.134 ms (0.49%)
uuid 0.659 ms (0.29%)
_uuid 0.254 ms (0.11%)
ddtrace.internal.forksafe 0.239 ms (0.10%)
ddtrace.internal.runtime.container 1.087 ms (0.47%)
email.encoders 1.262 ms (0.55%)
base64 0.749 ms (0.33%)
struct 0.322 ms (0.14%)
_struct 0.199 ms (0.09%)
binascii 0.192 ms (0.08%)
quopri 0.175 ms (0.08%)
email 0.145 ms (0.06%)
dataclasses 0.703 ms (0.31%)
ddtrace.internal.uds 0.149 ms (0.06%)
ddtrace.internal.utils.retry 0.390 ms (0.17%)
__future__ 0.154 ms (0.07%)
ddtrace.internal.gitmetadata 11.499 ms (5.00%)
ddtrace.ext.ci 8.646 ms (3.76%)
ddtrace.ext.git 6.737 ms (2.93%)
shutil 2.285 ms (0.99%)
bz2 0.714 ms (0.31%)
_bz2 0.249 ms (0.11%)
_compression 0.221 ms (0.10%)
lzma 0.541 ms (0.24%)
_lzma 0.297 ms (0.13%)
zlib 0.366 ms (0.16%)
subprocess 1.791 ms (0.78%)
selectors 0.523 ms (0.23%)
fcntl 0.178 ms (0.08%)
select 0.174 ms (0.08%)
_posixsubprocess 0.153 ms (0.07%)
msvcrt 0.072 ms (0.03%)
random 0.995 ms (0.43%)
bisect 0.300 ms (0.13%)
_bisect 0.158 ms (0.07%)
_sha2 0.168 ms (0.07%)
_random 0.159 ms (0.07%)
ddtrace.internal.utils.time 0.705 ms (0.31%)
datetime 0.443 ms (0.19%)
_datetime 0.242 ms (0.11%)
tempfile 0.407 ms (0.18%)
platform 1.255 ms (0.55%)
_wmi 0.073 ms (0.03%)
ddtrace.ext 0.166 ms (0.07%)
ddtrace.settings._core 2.627 ms (1.14%)
envier 1.435 ms (0.62%)
envier.env 1.270 ms (0.55%)
ddtrace.internal.native 0.599 ms (0.26%)
ddtrace.internal.native._native 0.404 ms (0.18%)
ddtrace.settings._otel_remapper 0.258 ms (0.11%)
ddtrace.internal.utils.cache 6.557 ms (2.85%)
inspect 6.328 ms (2.75%)
ast 2.289 ms (1.00%)
_ast 1.190 ms (0.52%)
dis 1.447 ms (0.63%)
opcode 0.581 ms (0.25%)
_opcode 0.157 ms (0.07%)
importlib.machinery 0.233 ms (0.10%)
importlib 0.166 ms (0.07%)
ddtrace._trace.pin 2.874 ms (1.25%)
wrapt 2.443 ms (1.06%)
wrapt.__wrapt__ 0.896 ms (0.39%)
wrapt.wrappers 0.443 ms (0.19%)
wrapt._wrappers 0.278 ms (0.12%)
wrapt.decorators 0.519 ms (0.23%)
wrapt.arguments 0.127 ms (0.06%)
wrapt.importer 0.506 ms (0.22%)
importlib.util 0.303 ms (0.13%)
importlib._abc 0.188 ms (0.08%)
wrapt.patches 0.176 ms (0.08%)
wrapt.weakrefs 0.149 ms (0.06%)
ddtrace._trace 0.135 ms (0.06%)
ddtrace.internal.schema 1.149 ms (0.50%)
ddtrace.internal.schema.span_attribute_schema 0.955 ms (0.42%)
ddtrace.settings._inferred_base_service 0.295 ms (0.13%)
ddtrace.settings.integration 0.306 ms (0.13%)
ddtrace.internal.utils.attrdict 0.133 ms (0.06%)
ddtrace.settings.http 0.172 ms (0.07%)
ddtrace.internal.serverless 0.140 ms (0.06%)
ddtrace._hooks 0.681 ms (0.30%)
ddtrace.internal.logger 0.294 ms (0.13%)
copy 0.189 ms (0.08%)
ddtrace.settings.exceptions 0.277 ms (0.12%)
ddtrace.internal.utils.formats 5.138 ms (2.24%)
ddtrace.internal.compat 4.492 ms (1.95%)
pathlib 2.864 ms (1.25%)
urllib.parse 1.349 ms (0.59%)
math 0.209 ms (0.09%)
urllib 0.125 ms (0.05%)
ntpath 0.468 ms (0.20%)
nt 0.317 ms (0.14%)
_winapi 0.067 ms (0.03%)
fnmatch 0.157 ms (0.07%)
errno 0.053 ms (0.02%)
ipaddress 1.315 ms (0.57%)
ddtrace.internal.utils 0.332 ms (0.14%)
ddtrace.internal.constants 0.314 ms (0.14%)
ddtrace.constants 0.124 ms (0.05%)

The following import paths have grown:

ddtrace.auto 2.945 ms (1.28%)
ddtrace.bootstrap.sitecustomize 2.461 ms (1.07%)
ddtrace.bootstrap.preload 2.270 ms (0.99%)
ddtrace.internal.products 1.261 ms (0.55%)
ddtrace.internal.symbol_db.remoteconfig 0.852 ms (0.37%)
multiprocessing 0.765 ms (0.33%)
multiprocessing.context 0.765 ms (0.33%)
multiprocessing.process 0.765 ms (0.33%)
ddtrace.internal.symbol_db.symbols 0.087 ms (0.04%)
ddtrace.internal.utils.inspection 0.087 ms (0.04%)
importlib.metadata 0.126 ms (0.05%)
importlib.metadata._collections 0.070 ms (0.03%)
importlib.abc 0.056 ms (0.02%)
importlib.resources 0.056 ms (0.02%)
importlib.resources._common 0.056 ms (0.02%)
ddtrace.internal.remoteconfig.worker 0.103 ms (0.04%)
ddtrace.internal.remoteconfig.client 0.094 ms (0.04%)
ddtrace.internal.remoteconfig._pubsub 0.094 ms (0.04%)
ddtrace.internal.remoteconfig._subscribers 0.094 ms (0.04%)
ddtrace.internal.remoteconfig.utils 0.094 ms (0.04%)
ddtrace.debugging._config 0.086 ms (0.04%)
ddtrace.settings.profiling 1.009 ms (0.44%)
ddtrace.vendor.psutil 0.708 ms (0.31%)
ddtrace.vendor.psutil._pslinux 0.708 ms (0.31%)
glob 0.708 ms (0.31%)
ddtrace.internal.datadog.profiling.ddup 0.111 ms (0.05%)
ddtrace.internal.datadog.profiling.ddup._ddup 0.111 ms (0.05%)
ddtrace.internal.datadog.profiling.util 0.111 ms (0.05%)
ddtrace._trace.trace_handlers 0.105 ms (0.05%)
ddtrace.contrib.trace_utils 0.062 ms (0.03%)
ddtrace.contrib.internal.redis_utils 0.062 ms (0.03%)
ddtrace._trace._inferred_proxy 0.043 ms (0.02%)
ddtrace.propagation.http 0.043 ms (0.02%)
ddtrace.propagation 0.043 ms (0.02%)
ddtrace.appsec._common_module_patches 0.086 ms (0.04%)
ddtrace 0.484 ms (0.21%)
ddtrace.trace 0.372 ms (0.16%)
ddtrace._trace.filters 0.194 ms (0.08%)
ddtrace._trace.processor 0.194 ms (0.08%)
ddtrace.internal.writer 0.105 ms (0.05%)
ddtrace.internal.writer.writer 0.105 ms (0.05%)
ddtrace._trace.sampler 0.090 ms (0.04%)
ddtrace._trace.span 0.090 ms (0.04%)
ddtrace.internal.sampling 0.090 ms (0.04%)
ddtrace._trace.sampling_rule 0.090 ms (0.04%)
ddtrace._trace.tracer 0.178 ms (0.08%)
ddtrace.internal.dogstatsd 0.114 ms (0.05%)
ddtrace.vendor.dogstatsd 0.114 ms (0.05%)
ddtrace.vendor.dogstatsd.base 0.114 ms (0.05%)
queue 0.114 ms (0.05%)
heapq 0.114 ms (0.05%)
ddtrace.internal.schema.processor 0.063 ms (0.03%)
ddtrace._monkey 0.082 ms (0.04%)
ddtrace.appsec 0.082 ms (0.04%)
ddtrace.internal.core 0.082 ms (0.04%)
ddtrace.internal.core.event_hub 0.082 ms (0.04%)
ddtrace._logger 0.030 ms (0.01%)
ddtrace.internal.utils.formats 0.030 ms (0.01%)

The following import paths have shrunk:

ddtrace.auto 4.405 ms (1.92%)
ddtrace.bootstrap.sitecustomize 2.951 ms (1.28%)
ddtrace.bootstrap.preload 2.753 ms (1.20%)
ddtrace.internal.products 2.620 ms (1.14%)
ddtrace.internal.remoteconfig.client 0.814 ms (0.35%)
ddtrace.internal.remoteconfig._pubsub 0.089 ms (0.04%)
ddtrace.internal.remoteconfig._publishers 0.089 ms (0.04%)
ddtrace.internal.symbol_db.remoteconfig 0.812 ms (0.35%)
multiprocessing.sharedctypes 0.657 ms (0.29%)
multiprocessing.heap 0.657 ms (0.29%)
mmap 0.657 ms (0.29%)
ddtrace.internal.symbol_db.symbols 0.081 ms (0.04%)
ddtrace.internal.safety 0.081 ms (0.04%)
multiprocessing 0.074 ms (0.03%)
multiprocessing.context 0.074 ms (0.03%)
ddtrace.internal.uwsgi 0.776 ms (0.34%)
importlib.metadata 0.130 ms (0.06%)
importlib.abc 0.072 ms (0.03%)
importlib.resources 0.072 ms (0.03%)
importlib.resources._common 0.072 ms (0.03%)
importlib.resources._adapters 0.072 ms (0.03%)
importlib.metadata._adapters 0.058 ms (0.03%)
ddtrace.settings.dynamic_instrumentation 0.087 ms (0.04%)
ddtrace.settings.profiling 0.133 ms (0.06%)
ddtrace.vendor.psutil 0.133 ms (0.06%)
ddtrace._trace.trace_handlers 0.115 ms (0.05%)
ddtrace._trace.utils 0.070 ms (0.03%)
ddtrace._trace._inferred_proxy 0.045 ms (0.02%)
ddtrace.appsec._common_module_patches 0.083 ms (0.04%)
ddtrace.appsec._asm_request_context 0.083 ms (0.04%)
ddtrace 1.454 ms (0.63%)
ddtrace.trace 0.437 ms (0.19%)
ddtrace._trace.filters 0.233 ms (0.10%)
ddtrace._trace.processor 0.203 ms (0.09%)
ddtrace._trace.sampler 0.203 ms (0.09%)
ddtrace._trace.span 0.203 ms (0.09%)
ddtrace.internal.sampling 0.079 ms (0.03%)
ddtrace.internal.rate_limiter 0.079 ms (0.03%)
ddtrace._trace.tracer 0.204 ms (0.09%)
ddtrace.internal.dogstatsd 0.098 ms (0.04%)
ddtrace.vendor.dogstatsd 0.098 ms (0.04%)
ddtrace.vendor.dogstatsd.base 0.098 ms (0.04%)
queue 0.098 ms (0.04%)
_queue 0.098 ms (0.04%)
ddtrace._monkey 0.171 ms (0.07%)
ddtrace.settings.asm 0.171 ms (0.07%)

We refactor the interaction between telemetry and configuration to
resolve the circular import issue between these two components.
@P403n1x87 P403n1x87 force-pushed the refactor/telemetry-config-dependency branch from f975fc1 to 6f64dbb Compare March 20, 2025 18:51
@P403n1x87 P403n1x87 added the changelog/no-changelog A changelog entry is not required for this PR. label Mar 20, 2025
@pr-commenter
Copy link

pr-commenter bot commented Mar 20, 2025

Benchmarks

Benchmark execution time: 2025-03-26 10:18:11

Comparing candidate commit b86bfaf in PR branch refactor/telemetry-config-dependency with baseline commit 8ea5176 in branch main.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 498 metrics, 2 unstable metrics.

@P403n1x87 P403n1x87 force-pushed the refactor/telemetry-config-dependency branch from 3c6feb4 to 6d53d20 Compare March 21, 2025 10:11
@P403n1x87 P403n1x87 force-pushed the refactor/telemetry-config-dependency branch from 6d53d20 to 4f8f464 Compare March 21, 2025 10:14
@P403n1x87 P403n1x87 marked this pull request as ready for review March 21, 2025 10:18
@P403n1x87 P403n1x87 requested review from a team as code owners March 21, 2025 10:18
@P403n1x87 P403n1x87 enabled auto-merge (squash) March 21, 2025 10:18
@P403n1x87
Copy link
Contributor Author

Verified offline that with this change there are no import cycles that involve telemetry

Copy link
Contributor

@tylfin tylfin left a comment

Choose a reason for hiding this comment

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

This LGTM, do we have R0401 set up to warn somewhere to prevent future cyclic imports?

@P403n1x87
Copy link
Contributor Author

This LGTM, do we have R0401 set up to warn somewhere to prevent future cyclic imports?

We don't have a lint check for that unfortunately 🙁 . It looks like ruff still does not support R0401. However, we do have some scripts to check for that, but we're not in a position to include them in CI

@P403n1x87 P403n1x87 requested a review from a team as a code owner March 21, 2025 15:19
@mabdinur
Copy link
Contributor

This PR should resolve the system test failures: https://github.com/DataDog/system-tests/pull/4360/files

@P403n1x87 P403n1x87 force-pushed the refactor/telemetry-config-dependency branch from f382747 to 3f32a57 Compare March 24, 2025 11:00
Copy link
Contributor

@sanchda sanchda left a comment

Choose a reason for hiding this comment

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

Crashtracking and profiling stuff looks good 👍

@P403n1x87 P403n1x87 merged commit aca38f0 into main Mar 26, 2025
824 checks passed
@P403n1x87 P403n1x87 deleted the refactor/telemetry-config-dependency branch March 26, 2025 10:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changelog/no-changelog A changelog entry is not required for this PR.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants