Skip to content

chore(ci): Prepare 1.2.3 - #2037

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 5 commits into
releases/1.2.xfrom
jszwedko/backport-site-fallback-1.2.x
Jul 7, 2026
Merged

chore(ci): Prepare 1.2.3#2037
gh-worker-dd-mergequeue-cf854d[bot] merged 5 commits into
releases/1.2.xfrom
jszwedko/backport-site-fallback-1.2.x

Conversation

@jszwedko

@jszwedko jszwedko commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

Release-prep PR for ADP 1.2.3 on releases/1.2.x. Bumps the version and bundles four fixes. Because 1.2.x is on Rust 1.96.0 (same as main), the fetch_update fix could be cherry-picked directly rather than needing the #[allow(deprecated)] workaround used on 1.1.0.

  1. Honor site when dd_url equals the default-derived URL — corresponds to fix(config): honor site when dd_url equals the default-derived URL #2028 (7ec65f2). The Core Agent's config stream sends dd_url at its schema default (https://app.datadoghq.com) for every configuration, even when the operator only set site, so ADP routed all traffic to the US1 intake and site was effectively ignored (Investigate whether dd_url's schema default makes site unreachable in ADP. #1965). A dd_url equal to the default-derived URL is now filtered to None at deserialization, letting site determine the endpoint. set_dd_url bypasses serde and is unaffected. Adapted to the 1.2.x code (no configured_primary_endpoint), so the change is confined to the dd_url deserializer plus tests.

  2. Unblock the nightly generate-api-docs build — cherry-pick of fix(docs): replace deprecated atomic fetch_update with try_update #2007 (917e05f). Newer nightly toolchains deprecate Atomic*::fetch_update; under #![deny(warnings)], cargo +nightly doc turns that into a hard error. Since 1.2.x uses the 1.96.0 toolchain (where try_update is stable), the three call sites switch to try_update, matching main. (The fixed_size.rs hunk from the original commit was dropped — that method doesn't exist on 1.2.x and has no fetch_update to fix.)

  3. Update anyhow — cherry-pick of chore(deps): update anyhow #1945 (bc51393). Bumps anyhow 1.0.102 → 1.0.103 in Cargo.lock to unblock check deny. (The 2a7be76 hash is the gh-pages docs artifact for that PR; bc51393 is the source commit.)

  4. Bump crossbeam-epoch to 0.9.20 — fresh fix for RUSTSEC-2026-0204. crossbeam-epoch 0.9.18 (an invalid pointer dereference in the fmt::Pointer impl for Atomic/Shared) fails check-deny. This is a repo-wide issue; the equivalent fix for main is chore(deps): bump crossbeam-epoch to 0.9.20 for RUSTSEC-2026-0204 #2038. Applied directly here (semver-compatible, lockfile-only bump) rather than cherry-picked, since it landed on the release branches in parallel with the main PR.

Plus a chore(dev): Bump ADP to 1.2.3 commit updating bin/agent-data-plane/Cargo.toml and the lockfile.

Test plan

  • New unit tests for the dd_url/site resolution (default filtered → None; explicit override wins; set_dd_url never filtered; end-to-end build_primary_endpoint for both cases).
  • make check-deny passes with the crossbeam-epoch bump.
  • cargo check passes for the affected crates on the pinned 1.96.0 toolchain, including the try_update call sites.

Fixes #1965.

🤖 Generated with Claude Code

webern and others added 3 commits July 6, 2026 15:11
## Summary

Update a crate currently blocking check deny.

## Change Type

- [x] Non-functional (chore, refactoring, docs)



## How did you test this PR?
CI

## References
N/A

Co-authored-by: toby.lawrence <toby.lawrence@datadoghq.com>
)

Newer Rust nightly toolchains renamed `Atomic*::fetch_update` to `try_update` for consistency. Because `make generate-api-docs` runs `cargo +nightly doc` and all affected crates have `#![deny(warnings)]`, the deprecation is promoted to a hard error, breaking the CI `generate-api-docs` job.

This replaces all three `fetch_update` call sites with `try_update`. The new name is available on both the nightly used by `make generate-api-docs` and the pinned stable `1.96.0` toolchain used for regular builds, checks, and tests.

- `make generate-api-docs` passes on the updated nightly (1.99.0-nightly 2026-07-05).
- `cargo +1.96.0 check --tests` passes for the affected crates.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: jesse.szwedko <jesse.szwedko@datadoghq.com>
Backport of #2028 to releases/1.2.x.

The Core Agent's config stream sends dd_url at its schema default
(https://app.datadoghq.com) for every configuration, even when the operator
only set site. ADP was treating that default as an explicit override and
routing all traffic to the US1 intake, so site was effectively ignored (#1965).

Filter the default value at deserialization: a dd_url equal to the
default-derived URL is treated as None, allowing site to determine the
endpoint. This only affects the serde path; programmatic callers such as
set_dd_url bypass serde and are unaffected.

Adapted to the 1.2.x code (no configured_primary_endpoint), so the change is
confined to the dd_url deserializer plus tests.

Fixes #1965.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 6, 2026 22:20
@jszwedko
jszwedko requested a review from a team as a code owner July 6, 2026 22:20
@dd-octo-sts dd-octo-sts Bot added area/io General I/O and networking. area/components Sources, transforms, and destinations. area/ci CI/CD, automated testing, etc. area/observability Internal observability of ADP and Saluki. labels Jul 6, 2026
@datadog-prod-us1-4

This comment has been minimized.

@jszwedko jszwedko changed the title Backports to 1.2.x: honor site, unblock nightly docs, update anyhow chore(ci): Backports to 1.2.x: honor site, unblock nightly docs, update anyhow Jul 6, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Backports three fixes to the releases/1.2.x line to restore correct endpoint resolution when site is set, keep nightly API-doc generation unblocked under #![deny(warnings)], and resolve a dependency audit blocker.

Changes:

  • Treat schema-default dd_url (https://app.datadoghq.com) as unset during deserialization so site can determine the intake endpoint, and add unit tests for the resolution behavior.
  • Pin and share a single nightly toolchain version for both Miri and API-doc generation; update docs workflow to rely on the Makefile’s pinned nightly installation.
  • Update anyhow from 1.0.102 to 1.0.103 in Cargo.lock, and replace deprecated fetch_update call sites with try_update.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
Makefile Introduces a shared pinned nightly version and uses it for API-doc generation and Miri setup.
lib/saluki-metrics/src/test.rs Replaces deprecated fetch_update with try_update in test helpers.
lib/saluki-io/src/net/util/retry/policy/rolling_exponential.rs Replaces deprecated fetch_update with try_update in retry policy bookkeeping.
lib/saluki-components/src/common/datadog/endpoints.rs Filters default dd_url at serde-deserialize time to allow site to take effect; adds targeted unit tests.
Cargo.lock Bumps anyhow to unblock cargo deny / dependency auditing.
.github/workflows/docs.yml Updates Rust toolchain setup to provide rustup/cargo while deferring nightly pinning to the Makefile.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lib/saluki-components/src/common/datadog/endpoints.rs
@pr-commenter

pr-commenter Bot commented Jul 6, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: b02c083 · Comparison: 42e0844 · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 39.85 MiB (baseline) vs 40.03 MiB (comparison)
Size Change: +182.88 KiB (+0.45%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
figment +87.33 KiB 666
prost -31.70 KiB 482
otlp_protos::otlp_include::opentelemetry +28.43 KiB 191
[sections] +21.56 KiB 7
alloc +21.06 KiB 3501
anon.16459471181944c387c15a5548954026.678.llvm.8738394446259426161 +15.41 KiB 1
anon.c6eff494e958aee50571b85e1a4e41ac.2.llvm.7836766266218528871 -15.32 KiB 1
tonic +14.59 KiB 491
serde_with -12.64 KiB 58
&mut serde_json -12.60 KiB 102
core +10.76 KiB 16168
saluki_common::cache::CacheBuilder<K,V,W,H> +9.51 KiB 6
saluki_components::common::datadog -9.14 KiB 509
agent_data_plane::internal::env +8.65 KiB 199
saluki_components::sources::otlp -7.94 KiB 228
anon.37b88fe6cb66e39459b6e77ed9b89783.16.llvm.14261231893276215459 +7.77 KiB 1
anon.455e4055ccc158f74b85672ca09e1f2b.260.llvm.221889396750405353 -7.76 KiB 1
http_body_util -7.74 KiB 255
anon.058104e7c5e17815cc397c51159e7bb6.17.llvm.5917434062816465002 +7.55 KiB 1
anon.54c1a0044bdc70049609d77194c621d0.1.llvm.2461160726068242817 -7.55 KiB 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +1.0%  +240Ki  +1.1%  +212Ki    [57750 Others]
  [NEW] +54.4Ki  [NEW] +54.2Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h98629f489dff8344
  [NEW] +44.9Ki  [NEW] +44.7Ki    agent_data_plane::cli::run::handle_run_command::_{{closure}}::h3927722fc3c2c567
  [NEW] +35.5Ki  [NEW] +35.3Ki    _<saluki_components::transforms::aggregate::Aggregate as saluki_core::components::transforms::Transform>::run::_{{closure}}::h1e4166e7041e8dcc
  [NEW] +35.3Ki  [NEW] +35.1Ki    _<saluki_components::forwarders::otlp::OtlpForwarder as saluki_core::components::forwarders::Forwarder>::run::_{{closure}}::h93ba9413ffa13406
  [NEW] +30.2Ki  [NEW] +30.1Ki    agent_data_plane::cli::dogstatsd::handle_dogstatsd_command::_{{closure}}::h0cada1e6b4fcf476
  [NEW] +28.6Ki  [NEW] +28.5Ki    saluki_components::sources::otlp::metrics::translator::OtlpMetricsTranslator::translate_metrics::h4f9c1792147b335b
  [NEW] +25.7Ki  [NEW] +25.6Ki    saluki_components::sources::dogstatsd::drive_stream::_{{closure}}::he2fe0994b5553485
  [NEW] +25.5Ki  [NEW] +25.4Ki    agent_data_plane::internal::remote_agent::run_remote_agent_registration_loop::_{{closure}}::hb3f01db61269d770
  [NEW] +24.1Ki  [NEW] +24.0Ki    saluki_env::workload::collectors::containerd::NamespaceWatcher::build_initial_metadata_operations::_{{closure}}::h67966dc2d2934319
  [DEL] -24.1Ki  [DEL] -24.0Ki    saluki_env::workload::collectors::containerd::NamespaceWatcher::build_initial_metadata_operations::_{{closure}}::h30ec2069d647fa21
  [DEL] -24.2Ki  [DEL] -24.0Ki    core::ptr::drop_in_place<agent_data_plane::cli::run::handle_run_command::{{closure}}>::h1dd4120ec3ec6d5c
  [DEL] -24.6Ki  [DEL] -24.4Ki    agent_data_plane::internal::remote_agent::run_remote_agent_registration_loop::_{{closure}}::h6ae2b4ba5ed1f5ab
  [DEL] -25.9Ki  [DEL] -25.8Ki    saluki_components::sources::dogstatsd::drive_stream::_{{closure}}::h499b3cdd6d6beb82
  [DEL] -28.5Ki  [DEL] -28.4Ki    saluki_components::sources::otlp::metrics::translator::OtlpMetricsTranslator::translate_metrics::haefb58c0f02234a8
  [DEL] -30.1Ki  [DEL] -30.0Ki    agent_data_plane::cli::dogstatsd::handle_dogstatsd_command::_{{closure}}::h11e8854c933a8098
  [DEL] -31.6Ki  [DEL] -31.5Ki    agent_data_plane::internal::env::workload::RemoteAgentWorkloadProvider::from_configuration::_{{closure}}::h4e7da8d1ac8d0e9b
  [DEL] -33.5Ki  [DEL] -33.3Ki    _<saluki_components::transforms::aggregate::Aggregate as saluki_core::components::transforms::Transform>::run::_{{closure}}::h192ba0b55f6674d3
  [DEL] -35.3Ki  [DEL] -35.1Ki    _<saluki_components::forwarders::otlp::OtlpForwarder as saluki_core::components::forwarders::Forwarder>::run::_{{closure}}::hab94aa8347dcd327
  [DEL] -49.8Ki  [DEL] -49.7Ki    agent_data_plane::cli::run::handle_run_command::_{{closure}}::h2f426cd320078741
  [DEL] -54.3Ki  [DEL] -54.1Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h737255a90400e679
  +0.4%  +182Ki  +0.5%  +155Ki    TOTAL

crossbeam-epoch 0.9.18 is flagged by RUSTSEC-2026-0204 (invalid pointer
dereference in the fmt::Pointer impl for Atomic/Shared), failing check-deny.
Bump to 0.9.20, a semver-compatible lockfile-only update.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@jszwedko jszwedko changed the title chore(ci): Backports to 1.2.x: honor site, unblock nightly docs, update anyhow chore(ci): Backports for 1.2.3 Jul 6, 2026
@jszwedko jszwedko changed the title chore(ci): Backports for 1.2.3 chore(ci): Prepare 1.2.3 Jul 6, 2026
@pr-commenter

pr-commenter Bot commented Jul 6, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: 6a83f2a0-3d44-4134-90c4-bede9ac03c25
Baseline: b02c0834 · Comparison: 42e0844a · diff

Optimization Goals: ✅ No significant changes detected

Fine details of change detection per experiment (35)

Experiments configured erratic: true are tagged (ignored) and skipped when determining which experiments regressed or improved. Experiments which are detected as erratic at runtime are tagged (erratic) to flag that the run's sample dispersion was high, but their regression / improvement signal still counts.

experiment goal Δ mean % links
otlp_ingest_metrics_5mb_memory memory ⚪ +4.88 metrics profiles logs
dsd_uds_512kb_3k_contexts_cpu (erratic) cpu ⚪ +2.39 metrics profiles logs
dsd_uds_500mb_3k_contexts_throughput throughput ⚪ -1.69 metrics profiles logs
dsd_uds_1mb_3k_contexts_cpu (erratic) cpu ⚪ +1.60 metrics profiles logs
quality_gates_rss_idle memory ⚪ +0.33 metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory ⚪ +0.32 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ +0.26 metrics profiles logs
otlp_ingest_traces_5mb_memory memory ⚪ +0.16 metrics profiles logs
otlp_ingest_traces_5mb_throughput throughput ⚪ -0.10 metrics profiles logs
otlp_ingest_logs_5mb_throughput (ignored) throughput ⚪ -0.01 metrics profiles logs
dsd_uds_512kb_3k_contexts_throughput throughput ⚪ -0.00 metrics profiles logs
dsd_uds_1mb_3k_contexts_throughput throughput ⚪ -0.00 metrics profiles logs
dsd_uds_100mb_3k_contexts_throughput throughput ⚪ +0.00 metrics profiles logs
dsd_uds_10mb_3k_contexts_throughput throughput ⚪ +0.02 metrics profiles logs
otlp_ingest_metrics_5mb_throughput throughput ⚪ +0.02 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_throughput throughput ⚪ +0.06 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_memory memory ⚪ -0.13 metrics profiles logs
dsd_uds_10mb_3k_contexts_memory memory ⚪ -0.17 metrics profiles logs
dsd_uds_100mb_3k_contexts_memory memory ⚪ -0.19 metrics profiles logs
otlp_ingest_logs_5mb_cpu (ignored) cpu ⚪ -0.21 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_throughput throughput ⚪ +0.23 metrics profiles logs
dsd_uds_512kb_3k_contexts_memory memory ⚪ -0.27 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_memory memory ⚪ -0.34 metrics profiles logs
dsd_uds_500mb_3k_contexts_cpu (erratic) cpu ⚪ -0.36 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ -0.38 metrics profiles logs
dsd_uds_1mb_3k_contexts_memory memory ⚪ -0.43 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ -0.48 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_cpu (erratic) cpu ⚪ -0.58 metrics profiles logs
otlp_ingest_traces_5mb_cpu (erratic) cpu ⚪ -0.70 metrics profiles logs
dsd_uds_500mb_3k_contexts_memory memory ⚪ -0.81 metrics profiles logs
dsd_uds_100mb_3k_contexts_cpu (erratic) cpu ⚪ -1.05 metrics profiles logs
otlp_ingest_metrics_5mb_cpu (erratic) cpu ⚪ -1.42 metrics profiles logs
dsd_uds_10mb_3k_contexts_cpu (erratic) cpu ⚪ -2.87 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_cpu (erratic) cpu ⚪ -3.28 metrics profiles logs
otlp_ingest_logs_5mb_memory (ignored) memory ⚪ -4.96 metrics profiles logs
Bounds Checks: ✅ Passed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 131 MiB ≤ 140 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 42.3 MiB ≤ 50 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 64.9 MiB ≤ 75 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 ✅ 191 MiB ≤ 200 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 27.8 MiB ≤ 40 MiB metrics profiles logs
Explanation

A change is flagged as a regression when |Δ mean %| > 5.00% in the regressing direction for its optimization goal AND SMP marks the experiment as a regression (is_regression: true). Improvements use the matching criteria for the improving direction. Experiments configured erratic: true (tagged (ignored)) are skipped outright; experiments detected as erratic at runtime (tagged (erratic)) still count, since that flag describes sample dispersion rather than directional certainty. The Δ mean % cell is colored accordingly: 🟢 = improvement, 🔴 = regression, ⚪ = neutral. Reduction in CPU or memory is an improvement; reduction in ingress throughput is a regression.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 6, 2026 22:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 7 changed files in this pull request and generated no new comments.

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot merged commit 1ba8060 into releases/1.2.x Jul 7, 2026
79 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot deleted the jszwedko/backport-site-fallback-1.2.x branch July 7, 2026 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci CI/CD, automated testing, etc. area/components Sources, transforms, and destinations. area/io General I/O and networking. area/observability Internal observability of ADP and Saluki. mergequeue-status: done

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants