libdatadog update to 4678752b - #4063
Conversation
|
331c1ca to
f92f535
Compare
Benchmarks [ tracer ]Benchmark execution time: 2026-08-18 16:50:36 Comparing candidate commit e42db98 in PR branch Found 2 performance improvements and 2 performance regressions! Performance is the same for 189 metrics, 1 unstable metrics.
|
5b69580 to
b284c54
Compare
d072939 to
b743186
Compare
a72a553 to
e389e86
Compare
f639686 to
746c214
Compare
7d44fab to
3b55611
Compare
2bc6157 to
a031884
Compare
a031884 to
88b19b1
Compare
48d9c55 to
1bb0e56
Compare
39e009c to
ac612ab
Compare
513fd7a to
8bd0134
Compare
64f8b3d to
9acb0e4
Compare
486fa25 to
4e2a0ed
Compare
f280698 to
0371bd8
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/131483548 Full CI result: ❌ 1 job(s) failed
40520cc to
ac94ff5
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/131486497 Full CI result: ❌ 174 job(s) failed
990d3b7 to
e42db98
Compare
e42db98 to
4aae23f
Compare
Summary
Automated update of the libdatadog submodule to the latest HEAD.
$LIBDATADOG_PINNED_SHA4678752b4be5bec7e55112598eb1b9491ddd9cc6Full CI result: ❌ 174 job(s) failed
CI pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/131486497
libdatadog Integration Report
libdatadog SHA: 4678752b4be5bec7e55112598eb1b9491ddd9cc6
Analysis date: 2026-08-17
Overall status
Build & test summary
The pipeline reported 174 persistent job failures spread over three
sub-pipelines:
Every one of the 174 failures has the same single root cause: the
datadog-phpcrate (components-rs/) failed to compile with 9 errors, all incomponents-rs/remote_config.rs. All 71 collected trace files contain exactlythe same error block, and the remaining failures are jobs that build the
extension (and therefore
components-rs) without a collected trace:shared-trigger— Zend Abstract Interface Tests and ZAI Shared Testsbuild
components-rstoo:zend_abstract_interface/CMakeLists.txt:21includes
components_rs.cmakewhenBUILD_ZAI_TESTING=ON, andcatch2_mainlinks the resultinglibdatadog_php.a. Extension Tea Testsrun
make install, which buildsddtrace.so.appsec-trigger—helper-rust integration coverageruns the appsecintegration suite (
./gradlew test8.3-debug), which builds the extension.package-trigger— pecl tests and publish docker image for system testsbuild the extension from source.
The profiler sub-pipeline passed, which is consistent:
profiling/does notuse
libdd-remote-config.The 9 compile errors were:
All are straightforward API adaptations (see below). No behavioural test
failures were observed anywhere — nothing got far enough to run.
Note: because compilation aborts at type-checking, borrow-checking never ran on
this file. The edits were made to preserve the existing borrow structure (the
new
&straccessors borrow fromvalue/path, which are locals unrelated toremote_config), but I could not verify this by building — there is no Rusttoolchain in this environment.
Note on the tracer sub-pipeline: bridge
tracer-trigger(pipeline 85752) isfailed, but none of its jobs appear intmp/artifacts/all_failures.json(which only covers 85749/85750/85751). That looks like a gap in the artifact
collection rather than a distinct problem — the tracer builds
components-rs/remote_config.rsas well, so the same compile error applies.Non-trivial changes made
components-rs/remote_config.rsThree related upstream API changes, from
20a3f4d67 feat(remote-config)!: agentless RC fetcher (#2112)and theRemoteConfigPathrework (ea75b04c3,44f705ff1):ConfigInvariantsgained a requiredagentlessfield(
libdatadog/libdd-remote-config/src/fetch/fetcher.rs:54-64). It isOption<agentless::AgentlessConfig>with theagentlessfeature andOption<std::convert::Infallible>without it; we do not enable thatfeature, and the PHP tracer fetches remote config through the local Agent,
so the correct value is
None— which type-checks under either cfg branch.Added
agentless: Noneto the initializer inddog_init_remote_config_state.RemoteConfigValueno longer carriesproduct/config_id— it is now{ path: RemoteConfigPath, data: Option<RemoteConfigParsed> }(
libdatadog/libdd-remote-config/src/parse.rs:187-190), with theproduct/config-id/name components read back off the path. Updated:
value.product→value.path.product()value.config_id→value.path.config_id()RemoteConfigPathfields are now private, exposed via accessors(
libdatadog/libdd-remote-config/src/path.rs:103-143). The path is storedas a single
Box<str>plus offsets, soconfig_id()returns a borrowed&strinstead of an ownedString. Updated:path.product→path.product()path.config_id→path.config_id()Ownership consequences handled at the three sites that needed an owned key:
live_debugger.active.entry(value.config_id)→entry(config_id.to_string()), wherelet config_id = value.path.config_id();replaces the previousvalue.config_id.clone().apply_configalready takes&str, so theextra
Stringthat used to be cloned for it is gone.dynamic_config.active_configs.insert(value.config_id, …)→insert(value.path.config_id().to_string(), …).remove(&path.config_id)calls becameremove(path.config_id())— both maps are keyed by
String, andString: Borrow<str>, so lookingup by
&stris valid and avoids an allocation.No other file needed changes:
ConfigInvariantsandRemoteConfigPathareonly used opaquely elsewhere (
components-rs/common.h,components-rs/sidecar.h,appsec/src/helper/runner.cpp), andappsec/helper-rust'sconfig_id/productfields belong to its ownindependent path-parsing struct (
appsec/helper-rust/src/rc.rs:360), not tolibdatadog's.
The
matchonvalue.path.product()and onpath.product()both keep theirexisting
_ => {}catch-all arms, so the newDEBUGRC product added in7be7ac7f3 chore(rc)!: add DEBUG product (#2306)needs no further handlinghere.
Identified libdatadog issues
None identified. Every failure traced back to a deliberate, well-signposted
breaking API change (all the relevant upstream commits are marked
!), andeach had an obvious replacement API in the new tree.
Flaky / ignored failures
None. All 174 failures share the single compilation root cause described
above; nothing was dismissed as flaky.
Worth flagging for the CI tooling rather than for libdatadog: the
tracer-triggersub-pipeline (85752) failed but contributed zero jobs toall_failures.json, so the "174" count understates the real fallout./cc @bwoebi