libdatadog update to f9ac7f2b#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-07 06:03:36 Comparing candidate commit ef020cf in PR branch Found 0 performance improvements and 2 performance regressions! Performance is the same for 192 metrics, 0 unstable metrics.
|
36c88cf to
9e430a1
Compare
8af45ac to
a33197b
Compare
b412bda to
4015657
Compare
ef020cf to
115ca62
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/123680473 Full CI result: ❌ 1 job(s) failed
27525c1 to
2dc1602
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/123682114 Full CI result: ❌ 177 job(s) failed
Summary
Automated update of the libdatadog submodule to the latest HEAD.
$LIBDATADOG_PINNED_SHAf9ac7f2bbac1488791f88df2a78177f608c33633Full CI result: ❌ 177 job(s) failed
CI pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/123682114
libdatadog Integration Report
libdatadog SHA: f9ac7f2bbac1488791f88df2a78177f608c33633
Analysis date: 2026-07-08
Overall status
Build & test summary
CI reported 177 failed jobs. All of them (across the tracer, appsec, and package
sub-pipelines) trace back to a single root cause: the Rust crate
datadog-php(
components-rs/) no longer compiled against the new libdatadog, failing with thesame 4 errors in every job:
Because the extension (
ddtrace.so) could not be built, every downstream job thatcompiles or links it failed:
compile extension: debug-zts-asan— direct compile failure.compile tracing extension asan,compile extension windows,and all
pecl tests— depend on building the extension.appsec integration tests,test appsec extension,helper-rust integration coverage,appsec code coverage— build the tracer as adependency (
buildTracer-*gradle task fails with the same rustc errors).After the fixes below, the
datadog-phpcrate compiles again, which unblocks all ofthose cascading jobs.
The ~90 shared-trigger failures (
Extension Tea Tests,Zend Abstract Interface Tests,ZAI Shared Tests) are not caused by this update — see "Flaky / ignored".Non-trivial changes made
components-rs/stats.rs—FixedAggregationKey::is_trace_rootis nowpb::Trileanlibdatadog synced its protobufs with the agent (
chore!: update protobufs to be in sync with datadog-agent, #2180).FixedAggregationKey.is_trace_rootchanged frombooltolibdd_trace_protobuf::pb::Trilean(an unset/true/false tristate).use libdd_trace_protobuf::pb;.build_fixed_key, converted the PHP-sideboolto the tristate, matchinglibdatadog's own internal conversion (
aggregation.rs):stats.rs:496, copyingfixed.is_trace_rootintoOwnedShmSpanInput) needed no change — it is nowTrilean→Trilean, which is whyCI only flagged line 151.
components-rs/Cargo.toml— new dependencyAdded
libdd-trace-protobuf = { path = "../libdatadog/libdd-trace-protobuf" }so thecrate can name the
pb::Trileantype. It is a path dependency to the same vendoredcrate
libdd-trace-statsalready uses, sopb::Trileanresolves to the identical type.components-rs/remote_config.rs—Targetis now opaque;tagsareVec<String>Two libdatadog changes intersect here:
refactor(libdd-remote-config)!: hide Target inner properties so they are not leaked(fix: lifetime issue cached filename #2182) made all
Targetfields private and removed field access; the only publicconstructor is
Target::new(service, env, app_version, tags, process_tags).tags/process_tagsfields changed type fromVec<Tag>toVec<String>(already-formatted
"key:value"strings, perTarget::new's doc comment).Changes:
ddog_remote_configs_service_env_change: build the target viaTarget::new(...)instead of a struct literal, and convert the incoming
Vec<Tag>toVec<String>withtags.as_slice().iter().map(ToString::to_string).collect()(
Tag'sDisplayyields the full"key:value"string).Because
Targetno longer exposesservice, andddog_send_debugger_diagnosticsneeds the service string,
RemoteConfigStatenow keeps its own copy(
target_service: String), set at the singletrack_targetcall site (the onlyplace a
Targetis ever tracked on this manager).ddog_send_debugger_diagnosticsreads that copy instead of
get_target().service.This is behavior-preserving:
track_targetis the only mutator of the manager'sactive target in our code (no
reset_target/resetcalls), so before the firstservice_env_changethe stored value is""— exactly what the previousget_target().map_or("", …)returned — and afterwards the two stay in lock-step.RemoteConfigStateis an opaque type on the C side (not#[repr(C)]; only everhandled via
Box/pointer), so adding a private field does not affect the C ABI orrequire regenerating
datadog.h.Identified libdatadog issues
None identified. All four errors are legitimate, expected breaking-change adaptations
(the corresponding commits are marked
!in the changelog). Note, however, a minorergonomic gap: #2182 hid
Target's fields without providing read accessors(e.g. a
service()getter), which forced consumers that still need the service nameto track their own copy. Not a bug, but a getter would have made the migration
cheaper for downstream libraries.
Flaky / ignored failures
Extension Tea Tests,Zend Abstract Interface Tests, andZAI Shared Testsacross all PHP versions. These build the standaloneteatest framework and thezend_abstract_interfacecomponent, neither of whichlinks the libdatadog Rust code. They produced no compilation traces (the harness
only captures traces for compile/build failures), so they are not caused by the Rust
API change. Left as-is as unrelated / pre-existing infrastructure failures.
/cc @bwoebi