From 901731b6eea4ba322550944762253af2d9208d12 Mon Sep 17 00:00:00 2001 From: Gregory LEOCADIE Date: Tue, 30 Jun 2026 08:39:50 +0000 Subject: [PATCH] Export OTEL Thread Context API --- Cargo.lock | 1 + builder/Cargo.toml | 1 + builder/src/profiling.rs | 4 ++++ libdd-profiling-ffi/Cargo.toml | 4 +++- libdd-profiling-ffi/src/lib.rs | 5 +++++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 4763752c88..37618403e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3235,6 +3235,7 @@ dependencies = [ "libdd-ddsketch-ffi", "libdd-library-config-ffi", "libdd-log-ffi", + "libdd-otel-thread-ctx-ffi", "libdd-profiling", "libdd-shared-runtime-ffi", "libdd-telemetry-ffi", diff --git a/builder/Cargo.toml b/builder/Cargo.toml index 4c07580c7d..11e7b4cb06 100644 --- a/builder/Cargo.toml +++ b/builder/Cargo.toml @@ -31,6 +31,7 @@ log = [] ddsketch = [] ffe = [] shared-runtime = [] +otel-thread-ctx = [] regex-lite = ["libdd-common/regex-lite"] [lib] diff --git a/builder/src/profiling.rs b/builder/src/profiling.rs index 8c8f213aee..eb4af48df5 100644 --- a/builder/src/profiling.rs +++ b/builder/src/profiling.rs @@ -61,6 +61,8 @@ impl Profiling { headers.push("ffe.h"); #[cfg(feature = "shared-runtime")] headers.push("shared-runtime.h"); + #[cfg(feature = "otel-thread-ctx")] + headers.push("otel-thread-ctx.h"); let mut origin_path: PathBuf = [&self.source_include, "dummy.h"].iter().collect(); let mut target_path: PathBuf = [&self.target_include, "dummy.h"].iter().collect(); @@ -133,6 +135,8 @@ impl Module for Profiling { let features = self.features.to_string() + "," + "cbindgen"; #[cfg(feature = "crashtracker")] let features = features.add(",crashtracker-collector,crashtracker-receiver,demangler"); + #[cfg(feature = "otel-thread-ctx")] + let features = features.add(",otel-thread-ctx-ffi"); // Using rustc instead of build in order to overcome issues with LTO optimization. let mut cargo_args = vec![ diff --git a/libdd-profiling-ffi/Cargo.toml b/libdd-profiling-ffi/Cargo.toml index e1b40f7063..2377be7429 100644 --- a/libdd-profiling-ffi/Cargo.toml +++ b/libdd-profiling-ffi/Cargo.toml @@ -18,7 +18,7 @@ name = "datadog_profiling_ffi" [features] default = ["ddcommon-ffi"] -cbindgen = ["build_common/cbindgen", "libdd-common-ffi/cbindgen", "libdd-shared-runtime-ffi?/cbindgen"] +cbindgen = ["build_common/cbindgen", "libdd-common-ffi/cbindgen", "libdd-shared-runtime-ffi?/cbindgen", "libdd-otel-thread-ctx-ffi?/cbindgen"] ddtelemetry-ffi = ["dep:libdd-telemetry-ffi"] datadog-log-ffi = ["dep:libdd-log-ffi"] symbolizer = ["symbolizer-ffi"] @@ -34,6 +34,7 @@ ddcommon-ffi = ["dep:libdd-common-ffi"] ddsketch-ffi = ["dep:libdd-ddsketch-ffi"] datadog-ffe-ffi = ["dep:datadog-ffe-ffi"] shared-runtime = ["dep:libdd-shared-runtime-ffi", "libdd-shared-runtime-ffi/catch_panic"] +otel-thread-ctx-ffi = ["dep:libdd-otel-thread-ctx-ffi"] regex-lite = ["libdd-common/regex-lite"] [build-dependencies] @@ -62,3 +63,4 @@ thiserror = "2" tokio-util = "0.7.1" datadog-ffe-ffi = { path = "../datadog-ffe-ffi", default-features = false, optional = true } libdd-shared-runtime-ffi = { path = "../libdd-shared-runtime-ffi", default-features = false, optional = true } +libdd-otel-thread-ctx-ffi = { path = "../libdd-otel-thread-ctx-ffi", default-features = false, optional = true } diff --git a/libdd-profiling-ffi/src/lib.rs b/libdd-profiling-ffi/src/lib.rs index 2edd58dec2..c1de2077e7 100644 --- a/libdd-profiling-ffi/src/lib.rs +++ b/libdd-profiling-ffi/src/lib.rs @@ -58,3 +58,8 @@ pub use libdd_shared_runtime_ffi::*; // re-export tracer metadata functions #[cfg(feature = "ddcommon-ffi")] pub use libdd_common_ffi::*; + +// re-export otel-thread-ctx ffi +#[cfg(feature = "otel-thread-ctx-ffi")] +#[allow(unused_imports)] +pub use libdd_otel_thread_ctx_ffi::*;