Repository navigation
libdatadog update to aab513c2 - #4118
Conversation
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/131775866 Full CI result: ❌ 1 job(s) failed
|
Benchmarks [ tracer ]Benchmark execution time: 2026-08-19 21:01:11 Comparing candidate commit f0d39c2 in PR branch Found 0 performance improvements and 2 performance regressions! Performance is the same for 192 metrics, 0 unstable metrics.
|
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/131801566 Full CI result: ❌ 4 job(s) failed


Summary
Automated update of the libdatadog submodule to the latest HEAD.
$LIBDATADOG_PINNED_SHAaab513c2e3d6a9926ea00ec065e008fbb0c40591Full CI result: ❌ 4 job(s) failed
CI pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/131801566
libdatadog Integration Report
libdatadog SHA:
aab513c2e3d6a9926ea00ec065e008fbb0c40591(v41.0.0-18-gaab513c2e)Analysis date: 2026-08-19
Overall status
datadog-ipc→libdd-ipccrate rename) is already adapted inHEAD(commit
30166920e), and that adaptation is complete. No further codechanges were required in this round. All 4 remaining CI failures are
infrastructure / known-flaky jobs, not libdatadog incompatibilities.
Build & test summary
What actually changed in libdatadog
The submodule moved
a8bdcdb0c→aab513c2e, which is only 3 commits:fe7124662refactor(datadog-ipc): prepare datadog-ipc* crates for publishing(#2359)150809215fix: bump libdd trace stats internal dep(#2367)libdd-ipc/Cargo.tomlaab513c2echore: add manual trigger for validation after fix(#2366)(
tmp/artifacts/libdatadog_changelog.txtis a flatgit log -n 100oflibdatadog
main, so it lists many olderv38 → v41commits that werealready integrated by earlier bumps. The delta relevant to this update is
the 3 commits above, computed with
git -C libdatadog log --oneline a8bdcdb0c..aab513c2e.)I verified the delta carries no functional change:
Every
.rssource file under the renamed crate has a| 0diffstat (puregit mv); the only surviving hunks after filtering out the identifier renameare
use-block reflows fromrustfmt. All inter-crate deps arepathdependencies, so the
libdd-trace-stats 6.0.0 → 7.0.0metadata bump in #2367cannot resolve a different crate version. Net: no code path in libdatadog
behaves differently than at
a8bdcdb0c.Compilation
No compilation failures anywhere.
tmp/artifacts/traces/— which thecollector populates with log tails for build/compile failures — is empty, and
no failed job is in a compile/build stage. Every tracer, appsec, profiler,
shared and package build job succeeded, including
compile extensionacrossall 11 PHP targets (7.0–8.5), the Windows build, and
cbindgenheadergeneration.
ASAN test_c: [8.3, amd64]failed on its first attempt and passed onretry, so the ASAN build and C test suite are clean.
Remaining failures
failure_reasontest_extension_ci: [8.0]script_failurebundle for reliability envrunner_system_failurepublish docker image for system testsscript_failureinstaller testsscript_failureSee "Flaky / ignored failures" for the per-job reasoning.
Non-trivial changes made
No code changes required in this round.
The single API change in this bump — libdatadog #2359 renaming the
datadog-ipcanddatadog-ipc-macroscrates (tolibdd-ipc/libdd-ipc-macros) so they can be published to crates.io — was alreadyadapted in the update commit
30166920eitself. I re-audited that adaptationand confirm it is complete:
components-rs/Cargo.toml:17datadog-ipcdep →libdd-ipc = { path = "../libdatadog/libdd-ipc" }components-rs/sidecar.rs:12datadog_ipc::rate_limiter::{AnyLimiter, ShmLimiterMemory}→libdd_ipc::…libdatadog/libdd-ipc/src/rate_limiter.rscomponents-rs/stats.rs:11datadog_ipc::shm_stats::{OwnedShmSpanInput, ShmSpanConcentrator, ShmSpanInput, MAX_PEER_TAGS}→libdd_ipc::…libdatadog/libdd-ipc/src/shm_stats.rs:69,303,321,355components-rs/telemetry.rs:9-10datadog_ipc::platform::NamedShmHandle,datadog_ipc::one_way_shared_memory::{open_named_shm, OneWayShmReader}→libdd_ipc::…cbindgen.toml:43includelist entrydatadog-ipc→libdd-ipcMakefile:51RUST_FILESglob:datadog-ipc,datadog-ipc-macros→libdd-ipc,libdd-ipc-macros;-not -path "*/datadog-ipc/build.rs"→*/libdd-ipc/build.rslibdd-ipc/build.rsexist in the new treeCargo.locklibdd-ipc,libdd-ipc-macrosnodes)Completeness checks I ran:
grep -rn --exclude-dir=libdatadog -E 'datadog[_-]ipc' .— the onlyremaining hits are the sidecar process/service name
datadog-ipc-helper(in.claude/debugging/*.md,tests/ext/telemetry/{simple,broken_pipe}.phpt,tests/ext/appsec/{sca,agentic_onboarding}_test.inc,appsec/tests/integration/.../TelemetryHelpers.groovy). That name isunchanged by Retain tracestate from tracecontext if extracted at all #2359 — it is still hardcoded in
libdatadog/datadog-sidecar/src/self_telemetry.rs:252,unix.rs:156andwindows.rs:111, so those references remain correct andmust not be renamed.
libdd_*/datadog_*import acrosscomponents-rs/*.rsresolves inthe new tree — I spot-checked the paths touched by the
!-marked breakingchanges in the wider changelog (
libdd_trace_protobuf::pb::Trilean,libdd_trace_stats::span_concentrator::FixedAggregationKey,libdd_trace_utils::span::v04::SpanBytes,libdd_trace_utils::trace_filter::{Span, TraceFilterer},libdd_data_pipeline::agent_info::schema::AgentInfoStruct) and all arepresent. Consistent with the clean compile across the whole matrix.
Cargo.toml(root workspace) needs no entry —components-rsis the onlyconsumer.
Identified libdatadog issues
None identified.
No panic, regression, or unexpected behaviour originating inside libdatadog
was observed. Given that the 3-commit delta contains no functional change
(evidence above), there is no libdatadog behavioural surface in this bump that
could regress.
Flaky / ignored failures
bundle for reliability env(package,shared-pipeline-build) —failure_reason: runner_system_failure, 65 s. GitLab classified this as arunner/infrastructure fault, not a script fault. The job body
(
.gitlab/generate-package.php:1717) is pure shell: writeupstream.env,mva prebuilt tarball,tarit. It compiles nothing and links nothingagainst libdatadog, and its upstream
package extensiondependency succeeded.The job is also declared
when: manual / allow_failure: trueoutside nightlybuilds. → Infrastructure flake.
publish docker image for system tests(package,release) —allow_failure: true. Per.gitlab/generate-package.php:1627, this jobconsumes a
dd-octo-stsGitHub token from the (alsoallow_failure: true)publish docker image for system tests (token)job, calls the GitHub RESTAPI, and
docker buildx --pushes a multi-arch image toghcr.io/datadog/dd-trace-php/dd-library-php.GIT_STRATEGY: none— it nevereven checks out our source. Every failure mode here is an external resource
(token minting, GitHub API, GHCR push) or the transient
resource_group: publish-system-tests-image-…lock. → External resourceissue.
installer tests(package,verify) — runsmake -C dockerfiles/verify_packages test_installerin docker-in-docker overalready-built packages. It is listed verbatim in
.gitlab/flaky-jobs.txt:30as a job excluded from the merge gate, i.e. the repo already tracks it as
flaky. It installs packages across several distro images, so it is network- and
DinD-sensitive. → Known-flaky.
test_extension_ci: [8.0](tracer,test) — matched bytest_extension_ci:*in.gitlab/flaky-jobs.txt:88, also excluded from themerge gate. Two independent arguments that this is not libdatadog-related:
.gitlab/generate-common.php:5-19) and only 8.0 failed. Nothing inlibdatadog is PHP-version-specific, and 8.0 is not special with respect to
the trace-sender split either —
DD_SIDECAR_TRACE_SENDER_DEFAULTputs7.0–8.2 on the in-process
tracer/coms.csender, and 7.0–7.4, 8.1 and 8.2all passed on the same sender path. A libdatadog regression would not
single out one ABI.
mechanical rename (evidence in "Build & test summary"). There is no changed
code path for a test to catch.
The job's second half is the more failure-prone one —
make test_extension_ci(Makefile:205-215) runs the.phptsuite twice, thesecond time under valgrind with
MAX_TEST_PARALLELISM=4and a hard! grep '^LEAKED TEST SUMMARY'gate, which is the usual source of this job'stiming-sensitive noise.
Limitation of this analysis, stated explicitly
Project rule ¶7 asks that a failure not be called pre-existing/unrelated
without reproducing it at
git merge-base HEAD origin/master. I could not dothat here: this environment has no Rust/PHP toolchain and no build or test
commands available, and job logs are not retrievable
(
GET /projects/355/jobs/<id>/tracereturns401 Unauthorizedwith theavailable
CI_JOB_TOKEN;tmp/artifacts/traces/is empty because thecollector only captures tails for compilation failures). In place of a
merge-base test run, the argument above rests on (a) the inspected libdatadog
diff containing no functional change, and (b)
test_extension_ci:*andinstaller testsalready being on the repo's own flaky list. Two of the fourfailures are additionally corroborated by GitLab metadata
(
runner_system_failure) and by the jobs beingallow_failure: truepublish-only steps.
One further corroborating data point:
HEAD's own commit message recordsthat the immediately preceding pipeline over this identical tree
(
131775866) finished with 1 failed job, whereas this pipeline(
131801566) reports 4. Identical code with a different failure set acrossruns is direct evidence of nondeterministic CI, not of a code defect. Note the
counterweight, for honesty:
test_extension_ci: [8.0]failed and failedagain on retry within this pipeline (
tmp/artifacts/retried_jobs.tsv), so itis either deterministic-but-preexisting or an environment condition that
persisted across both attempts. Confirming which requires the job log.
Recommended follow-up (needs a machine that can run the suite): pull the
log for job
https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/jobs/1963935211
to identify the failing
.phpt, then run that single test atgit merge-base HEAD origin/masterfor PHP 8.0 to confirm it is pre-existing.Nothing in this bump should be blocked on it.
/cc @bwoebi