Repository navigation
Conversation
❌ ErrorsYour PR has failed checks. Please review the issues below and take necessary action before merging. 🚦 25 Pipeline jobs failed
ℹ️ InfoNo other issues found (see more)❄️ No new flaky tests detected 🎯 Code Coverage (details) Useful? React with 👍 / 👎 This comment will be updated automatically if new data arrives.🔗 Commit SHA: fcdf84a | Docs | View more details | Give us feedback! |
Benchmarks [ tracer ]Benchmark execution time: 2026-11-03 14:23:08 Comparing candidate commit d5175e4 in PR branch Some scenarios are present only in baseline or only in candidate runs. If you didn't create or remove some scenarios in your branch, this maybe a sign of crashed benchmarks 💥💥💥 Scenarios present only in baseline:
Found 21 performance improvements and 27 performance regressions! Performance is the same for 142 metrics, 0 unstable metrics.
|
2531886 to
b29cd49
Compare
10c7edf to
84351df
Compare
73c262e to
0d3d03d
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0d3d03d6f7
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
f553cb8 to
a8f30bd
Compare
6dd5b69 to
47b3817
Compare
47b3817 to
dd1b7e6
Compare
Benchmarks [ profiler ]Benchmark execution time: 2026-11-03 15:02:34 Comparing candidate commit fcdf84a in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 24 metrics, 6 unstable metrics.
|
…er FFI Serialize closed spans into a libdatadog TracerPayloadV1Builder (Box-per-node pointer handles) and send them to the sidecar as /v1.0/traces, with the sidecar negotiating /info and downgrading to v0.4 for agents that lack it. The in-process sender keeps the v0.4 wire, transcoded from the same builder. Span tags live in a single typed attributes store; SpanData::$meta and $metrics are views onto it. Process tags and the OTLP export marker are TracerPayload attributes (the v0.4 downgrade puts them on each chunk's first span), and span links and events carry native attributes. DD_TRACE_AGENT_PROTOCOL_VERSION=0.4 forces v0.4. Bump libdatadog to the V1 FFI branch and port components-rs to the new rate limiter API.
Use typed SpanData::$attributes and the promoted env/version/component/span_kind properties instead of $meta/$metrics string conversions in the userland integrations and the OpenTelemetry bridge. Drop the userland App Analytics plumbing (addTraceAnalyticsIfEnabled, requiresExplicitTraceAnalyticsEnabling, markForTraceAnalytics and the per-integration candidates). TraceAnalyticsProcessor::normalizeAnalyticsValue and Tag::ANALYTICS_KEY are now deprecated no-ops; the serializer still maps an analytics.event tag to _dd1.sr.eausr.
dd_trace_serialize_closed_spans() now reports the V1 shape: a typed attributes map with promoted fields (span_kind, component, sampling_priority, ...) and native span links and events. Migrate the phpt, PHPUnit and snapshot tests to it, and add coverage for the V1 and v0.4 wires, span attributes, ignoreError and the default root component. Remove tests for the retired userland msgpack serializer and thread sender (dd_trace_serialize_msgpack, dd_trace_send_traces_via_thread, the in-process background sender capability tests) and for the removed App Analytics trace search config.
Add a msgpack V1 decoder to the request-replayer and advertise /v1.0/traces in its /info, so the PHP test suite can inspect V1 payloads. Move the CI service to the 5.0 image and force-pull the Windows service images so a runner with a stale cached digest does not skip a rebuilt image. Add APM_TRACING_EFFICIENT_PAYLOAD to the System Tests matrix.
…merge Clone system-tests at SYSTEM_TESTS_REF (default leiyks/php-v1-payload, DataDog/system-tests#7843) from SYSTEM_TESTS_REPO.
… wire loops by time
ecae624 to
d5175e4
Compare
The test disabled telemetry and the sidecar trace sender, so nothing started the sidecar that fetches the agent /info, and span_events was never advertised. Drop the telemetry opt-out and assert await_agent_info succeeds.
Migrate the tracer to the V1 Efficient Trace Payload protocol (APMLP-1197). This PR is also part of the V2 release, so it carries the V2 deprecations and removals listed below.
/v1.0/traceswhen the agent's/infoadvertises it and downgrades to v0.4 otherwise. The in-process sender keeps the v0.4 wire, downgraded from the same builder by libdatadog._dd.top_leveland sendsclient_computed_top_level.SpanData::$attributesstore, with$env,$version,$componentand$spanKind(DDTrace\SpanKind) properties. Span links and events carry native typed attributes. Process tags, the OTLP export marker, git metadata and the hostname are payload-level.dd_trace_serialize_closed_spans()returns the V1 payload view and the tests are migrated to it. The request-replayer decodes V1 into the same JSON view.Before merge
libdatadogsubmodule is pinned to that PR's head. Re-pin it to the merge commit once it lands.ci(temp): run system-tests from leiyks/php-v1-payload, revert before mergepoints the System Tests job at that branch. Revert it before merge (theAPM_TRACING_EFFICIENT_PAYLOADscenario stays).Behaviour changes
DD_TRACE_SIDECAR_TRACE_SENDER=0selects the in-process sender.DD_TRACE_AGENT_PROTOCOL_VERSION:1.0(default) sends V1 when the agent advertises/v1.0/traces,0.4always sends v0.4.http.status_code,env/versionand ids stay strings.SpanData::$metaand$metricsare views onto$attributes(both deprecated).$metareads list every property-backed key that is set, so legacyDDTrace\Span::getAllTags()now also returnsservice.name,operation.nameandspan.type.service.name,resource.name,operation.name,span.type,env,version,component,span.kindorerror.ignoredthrough$metasets the matching span property;$attributeskeys stay raw.DDTrace\Span:setTag($k, null)andsetMetric($k, null)remove the key, bool tags become"true"/"false"(they were"1"/""), and an object passed tolog()as the message is sent as a map of its public properties.componentto"web"; frameworks still override it, and CLI root spans get no default.#[DDTrace\Trace]gains$attributes,$kindand$component. A non-empty$tagsstill applies but raisesE_DEPRECATED.DDTrace\Config\integration_analytics_enabled(),DDTrace\Config\integration_analytics_sample_rate(), and the internaldd_trace_serialize_msgpack(),dd_trace_send_traces_via_thread(),dd_trace_buffer_span(),dd_trace_coms_trigger_writer_flush(),dd_trace_reset()anddd_trace_noop().DD_TRACE_ANALYTICS_ENABLED,DD_TRACE_<INTEGRATION>_ANALYTICS_ENABLEDandDD_TRACE_<INTEGRATION>_ANALYTICS_SAMPLE_RATE(with theirDD_<INTEGRATION>_ANALYTICS_*aliases), andDD_TRACE_WARN_LEGACY_DD_TRACE.analytics.eventtag is no longer mapped to_dd1.sr.eausr.Tag::ANALYTICS_KEYandTraceAnalyticsProcessor::normalizeAnalyticsValue()are deprecated no-ops.dd_trace_serialize_closed_spans()returns the V1 payload view: payload fields,attributes, andchunks, each withtrace_id,priority,origin,sampling_mechanismandspans.DD_TRACE_REPORT_HOSTNAME) is a payload field: the root span's$metano longer has_dd.hostname(Tag::HOSTNAME). The v0.4 downgrade still writes it on each trace's local root.SpanLink::$droppedAttributesCountis no longer sent (V1 links have no such field).SpanLinkandSpanEventno longer implementJsonSerializable./v1.0/traces, and the in-process sender), a span without its own version gets the payloadapp_version(DD_VERSION, else the root span's version). This is libdatadog's existing V1 to v0.4 mapping.Deprecated functions (runtime
E_DEPRECATED):DDTrace\trace_id()DDTrace\root_span()->traceId(hex) orDDTrace\logs_correlation_trace_id()DDTrace\current_context()DDTrace\root_span()properties orDDTrace\generate_distributed_tracing_headers()ddtrace_config_app_name()dd_trace_env_config('DD_SERVICE')ddtrace_config_distributed_tracing_enabled()dd_trace_env_config('DD_DISTRIBUTED_TRACING')ddtrace_config_trace_enabled()dd_trace_env_config('DD_TRACE_ENABLED')dd_trace_set_trace_id()DDTrace\set_distributed_tracing_context()dd_trace_compile_time_microseconds()dd_trace_function()DDTrace\trace_function()dd_trace_method()DDTrace\trace_method()CI notes for reviewers
/infotoDD_TRACE_AGENT_URL, so jobs without a request-replayer use the newtest-agent-standaloneservice.5.0andphp-request-replayer-5.0_windowsimages, both built from this branch'sdockerfiles/services/request-replayer. Rebuild them if that source changes.meta._dd.p.dmandmetrics._sampling_priority_v1. The test agent's V1 conversion drops sampling mechanism 0 and copies the chunk priority onto every span (APMAPI-1545). Re-blessing would be flaky: a sidecar's first flushes go out as v0.4 before/infois known.