libdatadog update to 15899dfe - #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-24 17:03:33 Comparing candidate commit b562541 in PR branch Found 0 performance improvements and 1 performance regressions! Performance is the same for 193 metrics, 0 unstable metrics.
|
36c88cf to
9e430a1
Compare
8af45ac to
a33197b
Compare
b412bda to
4015657
Compare
33a2579 to
d043d5e
Compare
5d3f10e to
79d7358
Compare
93923bf to
ba5f02f
Compare
bf528c4 to
6e830cd
Compare
73d120c to
bb0ca7e
Compare
5b60136 to
30f5f0f
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/126695654 Full CI result: ❌ 148 job(s) failed
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/126697886 Full CI result: ❌ 248 job(s) failed
Update for libdatadog changes. Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com> Help distinguishing debug logs by url for parallel requests Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
9becf41 to
b562541
Compare
Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
58bb861 to
2d5858d
Compare
Summary
Automated update of the libdatadog submodule to the latest HEAD.
$LIBDATADOG_PINNED_SHA15899dfe754d12186ce7db72f0ff41c1920d52ecFull CI result: ❌ 248 job(s) failed
CI pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/126697886
libdatadog Integration Report
libdatadog SHA: 15899dfe754d12186ce7db72f0ff41c1920d52ec
Analysis date: 2026-07-23
Overall status
All 248 failing jobs trace back to just two root causes introduced by this
libdatadog bump, both of which are ordinary API changes that have been adapted
in the dd-trace-php Rust sources. No libdatadog bugs and no flaky failures were
identified.
Build & test summary
Every one of the 248 persistent failures is a build/compile failure (the whole
CI never reached the test phase). They split into two groups:
Manifest-parse failure (the mass failure — ~240 jobs).
Profiler, shared/ZAI/tea, package (pecl + Windows), appsec-extension and
most appsec-integration jobs die before compiling a single line, with:
libdatadog PR Do not emit a deprecated diagnostic for DD_LOGS_INJECTION #2253 "refactor: consolidate core dependencies at workspace
level (phase 1)" moved
serde(andanyhow,tokio,tracing) intolibdatadog's
[workspace.dependencies], so leaf crates such asdatadog-ffe,libdd-remote-config,libdd-otel-thread-ctx,libdd-lognow use
serde = { workspace = true, ... }.dd-trace-php builds the tracer by running
cargo buildfromcomponents-rs(see
compile_rust.sh), which makes the repo-rootCargo.tomltheactive workspace. When the many libdatadog crates are pulled in as path
dependencies, their
{ workspace = true }inheritance is resolved againstthis root manifest (that is exactly why the root already mirrored
arc-swap,hyperandhyper-util, per the comment in that file). Theroot was missing the four newly-consolidated deps, so manifest parsing
failed for every build.
Source-level API breakages (~2 dozen appsec jobs).
The appsec integration build uses a separate build tree whose workspace
already resolves
serde, so it got past the manifest error and surfacedthe real code incompatibilities.
datadog-php(components-rs) failed withexactly 4 compiler errors (see below). rustc emits all type/resolution
errors for a crate before aborting, so these 4 are the complete set for
components-rs; the profiler crate could not be reached at compile stagebecause of failure (1), but static analysis (below) shows it does not touch
any of the changed APIs.
After the changes described below, both root causes are resolved: the workspace
manifest parses, and every reported compiler error is addressed with the new
libdatadog APIs.
Non-trivial changes made
Cargo.toml(repo root)Added the four dependencies libdatadog #2253 consolidated to workspace level, so
libdatadog path-dependency crates can resolve their
{ workspace = true }inheritance against this manifest. Declarations mirror libdatadog's own
[workspace.dependencies](version-only,default-features = false; each leafcrate opts into the features it needs):
arc-swap,hyperandhyper-utilwere already present and are leftuntouched. A comment now documents that this list must stay in sync with
libdatadog's workspace dependencies.
components-rs/remote_config.rslibdatadog #2182 "hide Target inner properties" (partially reverted /
re-shaped by #2232) made
Target's fields private and changedtags/process_tagsfromVec<Tag>toVec<String>(already-formatted"key:value"strings). A public constructorTarget::new(...)and accessormethods
service()/env()/app_version()were added.ddog_remote_configs_service_env_change: replaced theTarget { … }structliteral with
Target::new(…), converting the incoming&libdd_common_ffi::Vec<Tag>intoVec<String>via eachTag'sDisplayimpl (
t.to_string()), which yields the expected"key:value"form.ddog_debugger_diagnostics_*(service lookup): changedt.service.as_str()to the new accessort.service()(which already returns&str).components-rs/stats.rslibdatadog #b02d45457 "update protobufs to be in sync with datadog-agent"
(and the trace-stats metric-tags work in #2170) changed
FixedAggregationKey::is_trace_rootfromboolto the three-valuedpb::Trilean.use libdd_trace_protobuf::pb::Trilean;.build_fixed_key, map the PHP-sideboolontoTrilean::True/Trilean::False(the PHP tracer only ever knows true/false, neverNotSet), matching libdatadog's own internal conversion idiom inlibdd-trace-stats/src/span_concentrator/aggregation.rs.FixedAggregationKeyconstruction (php_span_to_owned_input)copies the already-typed
Trileanand needed no change.components-rs/Cargo.tomlAdded
libdd-trace-protobuf = { path = "../libdatadog/libdd-trace-protobuf" }so
pb::Trileancan be named. It is not re-exported bylibdd-trace-stats, andit was already an in-tree transitive dependency, so no new package enters the
dependency graph /
Cargo.lock.Identified libdatadog issues
None identified. Every failure is an intentional, well-formed API change on the
libdatadog side (private
Targetfields + constructor,Vec<String>tags,Trileanforis_trace_root, workspace-level dependency consolidation), eachwith a clear new API to migrate to.
Flaky / ignored failures
None. All 248 failures are deterministic build failures with a common root
cause; none mention timing, sleep, races, or unrelated infrastructure.
Verification notes
cargo/makein this environment, so the changes are reasonedfrom the error traces and the new libdatadog sources.
components-rserrors are the complete set (rustc reports allresolution/type errors for a crate before aborting); each is addressed.
it does not reference
Target,is_trace_root,FixedAggregationKey, thechanged stats/trace-exporter/telemetry APIs, or any specific
libdd-library-config-ffisymbol (it only glob-re-exports it), so it isexpected to build once the workspace manifest resolves.
Cargo.lockshould not require manualedits.
/cc @bwoebi