chore(deps): update lading-payload to latest and upgrade millstone rand 0.9 → 0.10#1609
Conversation
…nd 0.9 → 0.10 Updates the lading-payload git rev to 01ef8d70, which includes the rand 0.9 → 0.10 upgrade in lading (#1865) and several other upstream improvements. Millstone's private rand 0.9 dependency is updated to the workspace rand 0.10 to match lading-payload's expectation. The rand 0.9 → 0.10 API changed how RNGs are passed across crate boundaries: rand_core 0.10 only implements Rng for types satisfying TryRng<Error=Infallible>, which concrete rand 0.10 RNGs do via direct impls. Using a mismatched rand 0.9 StdRng with a rand 0.10 trait boundary produces opaque DerefMut errors at the call site. Two call-site fixes in corpus.rs: - DogStatsD::new now takes &Config (was Config) — add & - generate_payloads and generate_payloads_inner de-genericized from R: Rng to concrete StdRng, which is the only type ever used; this sidesteps the generic R: Rng → &mut R: rand_core::Rng propagation issue Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Binary Size Analysis (Agent Data Plane)Target: d04bde8 (baseline) vs 85638fd (comparison) diff
|
| Module | File Size | Symbols |
|---|---|---|
anon.4f8fd67d74ae1f1600187cfeb0121be9.1.llvm.15410878768428557996 |
-130 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.1.llvm.9654349716448276079 |
+129 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.4.llvm.15410878768428557996 |
-115 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.4.llvm.9654349716448276079 |
+114 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.3.llvm.15410878768428557996 |
-109 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.3.llvm.9654349716448276079 |
+108 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.0.llvm.15410878768428557996 |
-97 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.0.llvm.9654349716448276079 |
+96 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.2.llvm.15410878768428557996 |
-95 B | 1 |
anon.4f8fd67d74ae1f1600187cfeb0121be9.2.llvm.9654349716448276079 |
+94 B | 1 |
[Unmapped] |
+5 B | 1 |
Detailed Symbol Changes
FILE SIZE VM SIZE
-------------- --------------
[NEW] +129 [NEW] +40 anon.4f8fd67d74ae1f1600187cfeb0121be9.1.llvm.9654349716448276079
[NEW] +114 [NEW] +25 anon.4f8fd67d74ae1f1600187cfeb0121be9.4.llvm.9654349716448276079
[NEW] +108 [NEW] +19 anon.4f8fd67d74ae1f1600187cfeb0121be9.3.llvm.9654349716448276079
[NEW] +96 [NEW] +7 anon.4f8fd67d74ae1f1600187cfeb0121be9.0.llvm.9654349716448276079
[NEW] +94 [NEW] +5 anon.4f8fd67d74ae1f1600187cfeb0121be9.2.llvm.9654349716448276079
+0.1% +5 [ = ] 0 [Unmapped]
[DEL] -95 [DEL] -5 anon.4f8fd67d74ae1f1600187cfeb0121be9.2.llvm.15410878768428557996
[DEL] -97 [DEL] -7 anon.4f8fd67d74ae1f1600187cfeb0121be9.0.llvm.15410878768428557996
[DEL] -109 [DEL] -19 anon.4f8fd67d74ae1f1600187cfeb0121be9.3.llvm.15410878768428557996
[DEL] -115 [DEL] -25 anon.4f8fd67d74ae1f1600187cfeb0121be9.4.llvm.15410878768428557996
[DEL] -130 [DEL] -40 anon.4f8fd67d74ae1f1600187cfeb0121be9.1.llvm.15410878768428557996
[ = ] 0 [ = ] 0 TOTAL
Regression Detector (Agent Data Plane)Regression Detector ResultsRun ID: 4b1418ab-4b90-4862-b9ba-ddf7dbb1d584 Baseline: d04bde8 Optimization Goals: ✅ No significant changes detected
|
| perf | experiment | goal | Δ mean % | Δ mean % CI | trials | links |
|---|---|---|---|---|---|---|
| ➖ | otlp_ingest_logs_5mb_memory | memory utilization | +3.89 | [+3.69, +4.09] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_logs_5mb_cpu | % cpu utilization | +2.41 | [-2.38, +7.20] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_logs_5mb_throughput | ingress throughput | -0.01 | [-0.13, +0.12] | 1 | (metrics) (profiles) (logs) |
Fine details of change detection per experiment
| perf | experiment | goal | Δ mean % | Δ mean % CI | trials | links |
|---|---|---|---|---|---|---|
| ➖ | dsd_uds_512kb_3k_contexts_cpu | % cpu utilization | +9.63 | [-49.41, +68.68] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_1mb_3k_contexts_cpu | % cpu utilization | +5.17 | [-48.90, +59.25] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_logs_5mb_memory | memory utilization | +3.89 | [+3.69, +4.09] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_5mb_cpu | % cpu utilization | +3.65 | [+1.49, +5.82] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_logs_5mb_cpu | % cpu utilization | +2.41 | [-2.38, +7.20] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_10mb_3k_contexts_cpu | % cpu utilization | +2.36 | [-27.50, +32.23] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_ottl_filtering_5mb_cpu | % cpu utilization | +0.95 | [-1.21, +3.11] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_5mb_memory | memory utilization | +0.31 | [+0.15, +0.46] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_ottl_transform_5mb_memory | memory utilization | +0.26 | [+0.10, +0.42] | 1 | (metrics) (profiles) (logs) |
| ➖ | quality_gates_rss_dsd_low | memory utilization | +0.25 | [+0.10, +0.41] | 1 | (metrics) (profiles) (logs) |
| ➖ | quality_gates_rss_dsd_heavy | memory utilization | +0.17 | [+0.05, +0.30] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_512kb_3k_contexts_memory | memory utilization | +0.15 | [+0.00, +0.29] | 1 | (metrics) (profiles) (logs) |
| ➖ | quality_gates_rss_dsd_ultraheavy | memory utilization | +0.14 | [-0.00, +0.27] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_ottl_filtering_5mb_throughput | ingress throughput | +0.08 | [+0.01, +0.16] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_5mb_throughput | ingress throughput | +0.04 | [-0.03, +0.12] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_512kb_3k_contexts_throughput | ingress throughput | +0.01 | [-0.05, +0.06] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_metrics_5mb_throughput | ingress throughput | +0.00 | [-0.17, +0.18] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_1mb_3k_contexts_throughput | ingress throughput | +0.00 | [-0.05, +0.06] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_ottl_transform_5mb_throughput | ingress throughput | -0.00 | [-0.07, +0.07] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_logs_5mb_throughput | ingress throughput | -0.01 | [-0.13, +0.12] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_10mb_3k_contexts_throughput | ingress throughput | -0.02 | [-0.19, +0.15] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_100mb_3k_contexts_throughput | ingress throughput | -0.02 | [-0.05, +0.01] | 1 | (metrics) (profiles) (logs) |
| ➖ | quality_gates_rss_idle | memory utilization | -0.03 | [-0.07, +0.01] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_100mb_3k_contexts_memory | memory utilization | -0.04 | [-0.20, +0.11] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_500mb_3k_contexts_memory | memory utilization | -0.07 | [-0.21, +0.08] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_100mb_3k_contexts_cpu | % cpu utilization | -0.08 | [-5.49, +5.32] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_1mb_3k_contexts_memory | memory utilization | -0.11 | [-0.25, +0.03] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_ottl_filtering_5mb_memory | memory utilization | -0.22 | [-0.46, +0.01] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_500mb_3k_contexts_cpu | % cpu utilization | -0.35 | [-1.85, +1.15] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_10mb_3k_contexts_memory | memory utilization | -0.41 | [-0.57, -0.25] | 1 | (metrics) (profiles) (logs) |
| ➖ | quality_gates_rss_dsd_medium | memory utilization | -0.49 | [-0.66, -0.33] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_metrics_5mb_cpu | % cpu utilization | -0.92 | [-6.70, +4.86] | 1 | (metrics) (profiles) (logs) |
| ➖ | dsd_uds_500mb_3k_contexts_throughput | ingress throughput | -1.45 | [-1.57, -1.34] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_metrics_5mb_memory | memory utilization | -2.69 | [-2.89, -2.50] | 1 | (metrics) (profiles) (logs) |
| ➖ | otlp_ingest_traces_ottl_transform_5mb_cpu | % cpu utilization | -2.82 | [-4.80, -0.84] | 1 | (metrics) (profiles) (logs) |
Bounds Checks: ✅ Passed
| perf | experiment | bounds_check_name | replicates_passed | observed_value | links |
|---|---|---|---|---|---|
| ✅ | quality_gates_rss_dsd_heavy | memory_usage | 10/10 | 123.59MiB ≤ 140MiB | (metrics) (profiles) (logs) |
| ✅ | quality_gates_rss_dsd_low | memory_usage | 10/10 | 41.29MiB ≤ 50MiB | (metrics) (profiles) (logs) |
| ✅ | quality_gates_rss_dsd_medium | memory_usage | 10/10 | 61.43MiB ≤ 75MiB | (metrics) (profiles) (logs) |
| ✅ | quality_gates_rss_dsd_ultraheavy | memory_usage | 10/10 | 177.52MiB ≤ 200MiB | (metrics) (profiles) (logs) |
| ✅ | quality_gates_rss_idle | memory_usage | 10/10 | 28.34MiB ≤ 40MiB | (metrics) (profiles) (logs) |
Explanation
Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%
Performance changes are noted in the perf column of each table:
- ✅ = significantly better comparison variant performance
- ❌ = significantly worse comparison variant performance
- ➖ = no significant change in performance
A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".
For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:
-
Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.
-
Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.
-
Its configuration does not mark it "erratic".
…nd 0.9 → 0.10 (#1609) ## Human Summary Bumps our version of `lading` up to bring in the upgrade to `rand` from DataDog/lading#1865 Subsequent PRs will bump `lading` further to bring in some updates I'm working on (see DataDog/lading#1871), just wanted to get this yak out of the way independently ## Summary - Updates `lading-payload` git rev to `01ef8d70`, picking up the rand 0.9 → 0.10 upgrade in lading (#1865) and other upstream improvements - Updates millstone's pinned `rand = "0.9"` to the workspace `rand = "0.10"` to match lading-payload's expectation - Fixes two `corpus.rs` call sites that broke with the new lading API: `DogStatsD::new` now takes `&Config` instead of `Config`, and the internal generator functions are de-genericized from `R: Rng` to concrete `StdRng` The rand 0.9 → 0.10 upgrade in rand_core changes how `Rng` is implemented: `rand_core 0.10` only blanket-implements `Rng` for types satisfying `TryRng<Error=Infallible>` via `DerefMut`, which concrete RNGs satisfy through direct impls in the rand crate. Mixing a rand 0.9 `StdRng` with a rand 0.10 trait boundary produced opaque `DerefMut` errors. The fix is to use the same rand version throughout. ## Test plan - [ ] `cargo check --workspace` passes - [ ] `cargo clippy -p millstone` passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: travis.thieman <travis.thieman@datadoghq.com> f91e8aa
Human Summary
Bumps our version of
ladingup to bring in the upgrade torandfrom DataDog/lading#1865Subsequent PRs will bump
ladingfurther to bring in some updates I'm working on (see DataDog/lading#1871), just wanted to get this yak out of the way independentlySummary
lading-payloadgit rev to01ef8d70, picking up the rand 0.9 → 0.10 upgrade in lading (#1865) and other upstream improvementsrand = "0.9"to the workspacerand = "0.10"to match lading-payload's expectationcorpus.rscall sites that broke with the new lading API:DogStatsD::newnow takes&Configinstead ofConfig, and the internal generator functions are de-genericized fromR: Rngto concreteStdRngThe rand 0.9 → 0.10 upgrade in rand_core changes how
Rngis implemented:rand_core 0.10only blanket-implementsRngfor types satisfyingTryRng<Error=Infallible>viaDerefMut, which concrete RNGs satisfy through direct impls in the rand crate. Mixing a rand 0.9StdRngwith a rand 0.10 trait boundary produced opaqueDerefMuterrors. The fix is to use the same rand version throughout.Test plan
cargo check --workspacepassescargo clippy -p millstonepasses🤖 Generated with Claude Code