Repository navigation
Conversation
ac-pplx
left a comment
There was a problem hiding this comment.
Each Kind CI shard installs the observability backends while the Rust producer builds. That means six mirror pulls, six kind loads onto every node and four Helm releases, run one after another. When the producer reuses main's image or builds incrementally, it finishes first, and the install sits on the shard's critical path. This PR runs the pulls, the loads and the metrics and traces releases in parallel.
"Install the observability profile" step, eight shards each
#1267's head 2.4-2.7 min mirror pulls one by one, 25-36 s
this head 1.7-1.9 min first pull alone 4-8 s, then the other five together in 9-13 s
The runs are #1267's and this head's. A failed metrics or traces release still fails the install: run_queued returns 1 as the last command of its || list, so set -e applies.
Verdict: Approved; 1 thread to resolve before merge.
Before merge (inline threads)
- The README and the commit message overstate what runs in parallel and what fails
Nits
- In CI the first mirror pull runs alone without guarding anything. The install step does not set
GHCR_TOKEN(.github/workflows/kind-ci.yml:369-376); the job logs in at its "Log in to GHCR" step. Soregistry_loginreturns at once for every pull, and the first pull costs 4-8 s per shard for nothing. Serialise it only whenGHCR_TOKENis set. run_queuedprints a batch's output only after every command in it exits. A cold local Tilt bring-up therefore shows nothing through the loads and the metrics and traces Helm waits (up to 5 minutes for traces), although the Tiltfile runs the installer to "show progress" (Tiltfile:141). Alogline naming the batch when it starts would fix that.- The body's timings come from an earlier head stacked on #1266, which has since closed. The runs above reproduce them; cite those runs instead.
|
Thanks for the review. The inline thread is fixed in 789a35c. On the nits:
|
…allel The observability install, which Kind CI's shards run while the Rust producer builds and local bring-ups run from the Tiltfile, did everything one step at a time: six mirror pulls (about 23 s in CI), six kind image loads onto every node (about 57 s, Prometheus alone 30 s) and four Helm releases with --wait (about 60 s). With the producer now often faster, that two-minute install is on a shard's critical path. In GitHub CI the mirror pulls now run in parallel; with GHCR_TOKEN set, the first one logs in alone, so no two docker logins write the Docker config at once. Elsewhere the images are still pulled one at a time. The loads run in parallel, and so do the metrics and traces releases, each its own chart in its own namespace; the logs and Grafana releases keep their order after them. Each batch is logged as it starts and its commands' output is printed in order once it ends. A failed release still fails the install; a failed pull or load still only warns.
Summary
The observability install, which Kind CI's shards run while the Rust producer builds and local bring-ups run from the Tiltfile, now pulls and loads its images in parallel. The metrics and traces releases also install at once.
Why. The install did everything one step at a time:
kind loads onto every node, about 57 s, Prometheus alone 30 s;--wait, about 60 s.PRs that change Rust now build incrementally from main's state, and the producer often finishes before this install does. That puts the install's 2.5 minutes on a shard's critical path.
What changes in
infra/space/kind/scripts/install-observability.sh:GHCR_TOKENset, the first pull logs in alone before the rest, so no twodocker logins write the Docker config at once; CI logs in at its own step and does not set it. Elsewhere the images are still pulled one at a time.kind loads run in parallel.test_otel_installs_only_selected_local_receiversrequires.Value. The install takes 1.7-1.9 minutes instead of 2.4-2.7, about 0.7 minutes off each shard's preparation. The required check gains that whenever the producer finishes before the shard's preparation, which is now the usual case.
Stack
Validation
scripts/tests/test_kind_observability_helpers.pypasses (15 tests) in a Linux container, as CI runs it. macOS's bash 3.2 fails two of them on main too, on an unbound empty array ininfra/space/kind/lib/release.sh.At this head CI no longer runs the first pull alone, which should save those 4-8 s. Its CI is running. Every shard passed.
Severity and risk
Severity: does not apply; this is a CI speedup.
Risk:
kind loads and pulls use more disk and network at once on the shard runner, and in a local bring-up.Not covered
AI assistance: Claude Code drafted the change and this description.
🤖 Generated with Claude Code