libdatadog update to 35f26ee0 - #4063
Conversation
|
331c1ca to
f92f535
Compare
Benchmarks [ tracer ]Benchmark execution time: 2026-07-27 11:22:15 Comparing candidate commit 5b69580 in PR branch Found 1 performance improvements and 3 performance regressions! Performance is the same for 190 metrics, 0 unstable metrics.
|
5b69580 to
b284c54
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/127618615 Full CI result: ❌ 4 job(s) failed
d072939 to
b743186
Compare
Automated update by CI pipeline https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/127633408 Full CI result: ❌ 1 job(s) failed
Summary
Automated update of the libdatadog submodule to the latest HEAD.
$LIBDATADOG_PINNED_SHA35f26ee0d0e25267a5b292acbe7f828efdca4c2aFull CI result: ❌ 1 job(s) failed
CI pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/dd-trace-php/-/pipelines/127633408
libdatadog Integration Report
libdatadog SHA:
35f26ee0d0e25267a5b292acbe7f828efdca4c2aAnalysis date: 2026-07-29
Overall status
✅ Clean update
No API incompatibilities. The single persistent CI failure is an
allow_failure: truerelease/infrastructure job that does not build or linklibdatadog.
Build & test summary
tmp/artifacts/ci_summary.txtreports 1 persistent failure after theautomatic retry pass:
shared-trigger(127619208)appsec-trigger(127619205)package-trigger(127619217)publish docker image for system testsprofiler-trigger(127619206)tracer-trigger(127619245)tmp/artifacts/traces/is empty. That is meaningful rather than acollection error:
.gitlab/libdatadog-latest.yml:189-208only downloads jobtraces for jobs whose name matches
compile build sidecar tracing profil appsec. An empty traces directory therefore means no compile-, build-,sidecar- or link-class job failed — i.e. every Rust/C/C++ compilation unit
built against the new libdatadog.
Actual libdatadog delta
tmp/artifacts/libdatadog_changelog.txtcontains exactly 100 entries andincludes the previously pinned SHA itself, which means the
git log <pinned>..HEADin.gitlab/libdatadog-latest.yml:182failed and thegit log --oneline -100fallback ran. The changelog is therefore not thedelta. The real delta (
git log f2010b616..35f26ee0d, previous pin taken fromgit show HEAD -- libdatadog) is 5 commits:35f26ee0dfix(sidecar): send eof chunk in datagram testdatadog-sidecar/src/crashtracker.rs4a0e5bc70feat(rc): Handle expired config statuslibdd-remote-config/src/fetch/fetcher.rsinternals + a test; no public API change (diff adds onlyasync fn test_expired_config_status_drops_all_configs)63a872a03chore: bump workspace version to 38.0.0pathdependency incomponents-rs/Cargo.tomlandprofiling/Cargo.tomlwith no version requirement79eff2fa1refactor(trace-utils)! split generic TracerHeaderTags95610de06feat(remote-config)! add AsmRawResponseBody capability79eff2fa1—TracerHeaderTagssplitThe commit moves
client_computed_stats,client_computed_top_level,dropped_p0_tracesanddropped_p0_spansout oflibdd_trace_utils::trace_utils::TracerHeaderTagsinto a new nestedTracerGenericTags(libdd-trace-utils/src/tracer_header_tags.rs:22-52).This does not reach us on either boundary:
libdd_trace_utilsimports arecomponents-rs/bytes.rs:3(span::v04::SpanBytes) andcomponents-rs/trace_filter.rs:17(trace_filter::{Span, TraceFilterer}).Neither module was touched. Nothing in
components-rs/,profiling/orappsec/namesTracerHeaderTags,TracerGenericTags,client_computed_*ordropped_p0_*.ddog_sidecar_send_trace_v04_*is the separate#[repr(C)]datadog_sidecar_ffi::TracerHeaderTags(
libdatadog/datadog-sidecar-ffi/src/lib.rs:791-800), which still has thefour flags flat. The commit only changed how that struct is converted
internally (
lib.rs:810-817). The checked-in cbindgen outputcomponents-rs/common.h:1211-1220still matches it field for field, sothere is no stale-ABI hazard.
95610de06—AsmRawResponseBodyAppends
AsmRawResponseBody = 49afterLlmObsActivation = 48and marks theenum
#[non_exhaustive](libdd-remote-config/src/lib.rs:82,133). Appendingleaves every existing discriminant unchanged, and
#[non_exhaustive]onlyconstrains exhaustive
matchon the enum —components-rs/remote_config.rsmerely constructs and
pushes variants (lines 146-181) and never matches onit. No adaptation needed.
Non-trivial changes made
No code changes required.
Two deliberate non-changes worth recording:
components-rs/common.hwas not regenerated. It is cbindgen output(
make cbindgen,Makefile:423-457) and is now missing only the unusedDDOG_REMOTE_CONFIG_CAPABILITIES_ASM_RAW_RESPONSE_BODY = 49constant. Novalue we use changed, so nothing is broken; hand-editing generated headers
would be worse than leaving them. A regeneration on the next
make cbindgenrun will pick it up.
AsmRawResponseBodycapability fromcomponents-rs/remote_config.rswould be a feature (appsec raw responsebody collection, RFC-115), not a compatibility adaptation, so it is out of
scope here.
Identified libdatadog issues
None identified.
Flaky / ignored failures
[profiler-trigger] PHP language tests: [8.5, amd64, zts]— failed onthe first attempt, passed on the automatic retry
(
tmp/artifacts/retried_jobs.tsv). Flaky; nothing to do.[package-trigger] publish docker image for system tests— the onepersistent failure. Ignored as unrelated to libdatadog:
.gitlab/generate-package.php:1584-1673defines it as astage: releasejob with
GIT_STRATEGY: noneandallow_failure: true. It compilesnothing: it reads a dd-octo-sts token, queries the GitHub PR API, and does
docker buildx build --pushof aFROM scratchimage containing thealready-built tarballs. It cannot be affected by a libdatadog API change.
I could not read its log to pin the exact cause — the trace was not
collected (the job name matches none of the
compile build sidecar tracing profil appseckeywords), and this environment has noGITLAB_PERSONAL_ACCESS_TOKEN(aJOB-TOKENrequest to/projects/355/pipelines/*/jobsreturns404 Project Not Found). From thescript, the two plausible causes are both branch/registry plumbing:
exit 3at line 1623 — "No open PR for branch"; onbot/libdatadog-latestthe PR is created by
analyze-and-create-pr, whichneeds: package-trigger(.gitlab-ci.yml:171-178) and so runs after this job,making the check racy on the bot branch;
ghcr.iologin /buildx --pushfailure.Caveat on CI coverage
tmp/artifacts/bridges.jsonrecordstracer-trigger(pipeline 127619245)with
downstream_pipeline.status: failed, yetcollect_failuresfound nofailed job in it and it appears in neither
all_failures.jsonnorretried_jobs.tsv. The explanation is the collector's use of/pipelines/:id/jobs, which defaults toinclude_retried=false: the tracerpipeline's test jobs carry
retry: 2/retry: {max: 2}(
.gitlab/generate-tracer.php:240,537), so a failed attempt that GitLab hadalready auto-retried is hidden behind the newer in-flight attempt.
So a tracer-pipeline job did fail at least once, but it was a GitLab-auto-retried
(transient-class) failure and its final outcome is not in these artifacts. It
was not a compile failure — those job names contain
compile, which the tracecollector would have captured. I am flagging this rather than claiming the
tracer pipeline was green end to end.
/cc @bwoebi