From 2270dc0d82ec49d5d38bb70cd8a47c6d26bda5c2 Mon Sep 17 00:00:00 2001 From: "Gabriele N. Tornetta" Date: Tue, 10 Jun 2025 11:17:24 +0100 Subject: [PATCH 1/2] feat(co): add in-product enablement support We add support for in-product enablement to code origin for spans. --- .../debugging/_products/code_origin/span.py | 24 +++++++++++++++++++ ...n-product-enablement-6b70fc52d62721fa.yaml | 4 ++++ 2 files changed, 28 insertions(+) create mode 100644 releasenotes/notes/feat-co-in-product-enablement-6b70fc52d62721fa.yaml diff --git a/ddtrace/debugging/_products/code_origin/span.py b/ddtrace/debugging/_products/code_origin/span.py index 274e2c1a12a..e571e15fe83 100644 --- a/ddtrace/debugging/_products/code_origin/span.py +++ b/ddtrace/debugging/_products/code_origin/span.py @@ -1,3 +1,5 @@ +import enum + from ddtrace.internal.products import manager as product_manager from ddtrace.settings._core import ValueSource from ddtrace.settings.code_origin import config @@ -14,6 +16,12 @@ def post_preload(): pass +def _start(): + from ddtrace.debugging._origin.span import SpanCodeOriginProcessor + + SpanCodeOriginProcessor.enable() + + def start(): if config.span.enabled: from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry @@ -33,6 +41,12 @@ def restart(join=False): pass +def _stop(): + from ddtrace.debugging._origin.span import SpanCodeOriginProcessor + + SpanCodeOriginProcessor.disable() + + def stop(join=False): if config.span.enabled: from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry @@ -48,3 +62,13 @@ def stop(join=False): def at_exit(join=False): stop(join=join) + + +class APMCapabilities(enum.IntFlag): + APM_TRACING_ENABLE_CODE_ORIGIN = 1 << 40 + + +def apm_tracing_rc(lib_config, _config): + if (enabled := lib_config.get("code_origin_enabled")) is not None: + should_start = (config.span.spec.enabled.full_name not in config.source or config.span.enabled) and enabled + _start() if should_start else _stop() diff --git a/releasenotes/notes/feat-co-in-product-enablement-6b70fc52d62721fa.yaml b/releasenotes/notes/feat-co-in-product-enablement-6b70fc52d62721fa.yaml new file mode 100644 index 00000000000..b6adaf07128 --- /dev/null +++ b/releasenotes/notes/feat-co-in-product-enablement-6b70fc52d62721fa.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + code origin: added support for in-product enablement. From d861785a4d6691b7561d6dd23fab50aa27830866 Mon Sep 17 00:00:00 2001 From: "Gabriele N. Tornetta" Date: Mon, 7 Jul 2025 10:56:06 +0100 Subject: [PATCH 2/2] pull in entry-exit separation --- ddtrace/debugging/_products/code_origin/span.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ddtrace/debugging/_products/code_origin/span.py b/ddtrace/debugging/_products/code_origin/span.py index e571e15fe83..e4ed054698c 100644 --- a/ddtrace/debugging/_products/code_origin/span.py +++ b/ddtrace/debugging/_products/code_origin/span.py @@ -17,9 +17,9 @@ def post_preload(): def _start(): - from ddtrace.debugging._origin.span import SpanCodeOriginProcessor + from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry - SpanCodeOriginProcessor.enable() + SpanCodeOriginProcessorEntry.enable() def start(): @@ -42,9 +42,9 @@ def restart(join=False): def _stop(): - from ddtrace.debugging._origin.span import SpanCodeOriginProcessor + from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry - SpanCodeOriginProcessor.disable() + SpanCodeOriginProcessorEntry.disable() def stop(join=False):