libdatadog update to d7b2aad3#4006
Conversation
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 91b5f2bade
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| @@ -1 +1 @@ | |||
| Subproject commit cd90e50a5b067cf77a3e06641d838bc4c6b62aba | |||
| Subproject commit c690b5e43ccdf5ff84566db4447d416ac8c48ea8 | |||
There was a problem hiding this comment.
Regenerate Cargo.lock for the new libdatadog versions
This bump points at a libdatadog revision that changes path package versions (libdd-common 4.2.0→5.0.0 and libdd-remote-config 0.1.0→1.0.0), but the parent Cargo.lock is unchanged and still records the old versions. I checked cargo build --help; --locked asserts the lockfile remains unchanged, so locked/reproducible builds from this commit will fail before compilation because Cargo must rewrite the lockfile for those path dependencies. Please regenerate and commit Cargo.lock with this submodule revision.
Useful? React with 👍 / 👎.
765df56 to
59f2b0d
Compare
c8bbc94 to
747c876
Compare
3904647 to
30b60d4
Compare
842f922 to
083afb6
Compare
Benchmarks [ tracer ]Benchmark execution time: 2026-07-04 05:31:27 Comparing candidate commit a465743 in PR branch Found 0 performance improvements and 8 performance regressions! Performance is the same for 185 metrics, 1 unstable metrics.
|
36c88cf to
9e430a1
Compare
8af45ac to
a33197b
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/122669057 Full CI result: ❌ 1 job(s) failed
af62bd5 to
8e975e5
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/122673621 Full CI result: ❌ 176 job(s) failed
Summary
Automated update of the libdatadog submodule to the latest HEAD.
$LIBDATADOG_PINNED_SHAd7b2aad37e2c45e44ba54473c9dd5ef5e3c94669Full CI result: ❌ 176 job(s) failed
CI pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/122673621
libdatadog Integration Report
libdatadog SHA: d7b2aad37e2c45e44ba54473c9dd5ef5e3c94669
Analysis date: 2026-07-04
Overall status
Build & test summary
All 176 failing jobs across every sub-pipeline (shared, appsec, package/windows)
trace back to a single root cause: the tracer's Rust crate
datadog-php(
components-rs/) no longer compiles against the new libdatadog API. The compilerreported exactly the same 4 errors in every failing build:
How the 176 failures decompose (all downstream of the above compile failure):
buildTracer-*Gradle/docker step compilesdatadog-phpand aborts. Confirmeddirectly in
tmp/artifacts/traces/.libdd_remote_config::Target).make installfirst, which buildsddtrace.so(includingcomponents-rs+ libdatadog Rust); it aborts before thepure-C tea tests run.
build (
BUILD_ZAI_TESTING)includescomponents_rs.cmake, which runscargo buildin
../components-rsand linkslibdatadog_php.a, so it hits the same compile error.There were no failures that were not explained by these three API changes, and
no failures originating from inside libdatadog itself.
Note: I cannot run
cargo/makein this environment, so the fixes below are reasonedfrom the compiler errors and the new libdatadog source; they were not locally compiled.
Non-trivial changes made
Three related, breaking libdatadog API changes were adapted. All edits are confined to
the tracer's own Rust (
components-rs/); nothing underlibdatadog/was touched.1.
components-rs/remote_config.rs—libdd_remote_config::Targetreworkedlibdatadog #2182 (
refactor(libdd-remote-config)!: hide Target inner properties) madeall
Targetfields private and added aTarget::new(...)constructor. libdatadog#2162 changed
tagsandprocess_tagsfromVec<Tag>toVec<String>(documented asalready-formatted
"key:value"strings).ddog_remote_configs_service_env_change): replaced the structliteral
Target { .. }withTarget::new(..). The FFI still receives&libdd_common_ffi::Vec<Tag>, so eachTagis rendered to its"key:value"stringvia
Tag'sDisplay/to_string()before being collected intoVec<String>. (Thestruct-literal privacy errors did not appear in the CI trace only because type-checking
aborted first; they would surface once the type errors are fixed, hence the switch to
the constructor.)
ddog_send_debugger_diagnostics, line 784):Targetnolonger exposes
serviceand provides no accessor, so the previoust.service.as_str()has no direct replacement. Since our code is the sole place thatconstructs/tracks the target (
track_targetis only called fromddog_remote_configs_service_env_change, and the target is never reset in our code),I added a
current_service: Stringfield toRemoteConfigState, set it whenever wetrack a target, and read it for the debugger-diagnostics payload. The original
semantics are preserved: an empty service is returned when no target is currently
tracked (
get_target().is_some()guard).2.
components-rs/stats.rs—FixedAggregationKey.is_trace_root: bool→pb::Trileanlibdatadog #2180 (
chore!: update protobufs to be in sync with datadog-agent) changedFixedAggregationKey::is_trace_rootfrombooltolibdd_trace_protobuf::pb::Trilean(
NotSet/True/False). Inbuild_fixed_keythe PHP-suppliedboolis nowmapped to
Trilean::True/Trilean::False(mirroring libdatadog's ownaggregation.rs). The PHP side always knows whether a span is a trace root, soNotSetis never emitted.3.
components-rs/Cargo.toml— new dependencyTrileanlives inlibdd-trace-protobuf, which was only a transitive dependency (vialibdd-trace-stats, which does not re-export it). Added a direct path dependency:libdd-trace-protobufis already part of the workspace / lockfile (used bylibdd-trace-stats), and the extension build does not use--locked/--frozen, so thisadds a resolver edge without introducing a version conflict.
Identified libdatadog issues
None identified. All failures were plain, expected API-compatibility breaks (the
libdatadog commits are explicitly marked breaking with
!), each with a clear new API toadapt to.
One thing worth flagging to the libdatadog team (not a bug, but a rough edge): #2182 hid
Target::servicewithout providing a public getter, so consumers that legitimately needto read back the target's service (as the PHP debugger-diagnostics path did) must now
track it themselves. A
Target::service(&self) -> &straccessor would be a friendlierAPI. Our workaround is clean and does not depend on the hidden field.
Flaky / ignored failures
None. Every one of the 176 failures is explained by the single
components-rscompilefailure and is expected to clear once the adaptations above are built.
/cc @bwoebi