Skip to content

fix(ci): isolation drill removes its probe containers, registry-sync runs on served-projection pushes (D-1481 D-1480) - #487

Merged
acamarata merged 2 commits into
mainfrom
dw3-plugins-1
Oct 26, 2026
Merged

acamarata merged 2 commits into
mainfrom
dw3-plugins-1

Conversation

@acamarata

Copy link
Copy Markdown
Contributor

D-1481: scenario-01 refuses to cut the network while a probe container is up

Failing run 40296379989: containers are running (... nself-ci-probe-921147ce8a3f-px Up 2 minutes). The drills run in name order, so drill-isolation-levels (its gVisor leg starts the engine's nself-ci-probe-* container, labelled nself.ci.probe=1) runs before drill-scenario-01-local-only. cut_preflight already waits 60 s for such a container; this one outlived that wait.

Fix: the isolation-levels drill removes, in its EXIT trap, the probe containers that were not there when it started. I picked this over having scenario-01 stop nself-ci-probe-* containers because it is the narrower change: it cleans up after the drill that leaked, and touches only containers that drill's run created (the same before/after rule scenario-01 already uses for nselfci-). Making scenario-01 kill containers it did not start would also hit unrelated containers on a developer machine, and it would hide any other drill that leaks.

Test: scripts/drill/isolation-levels/selftest.sh case 10 (fake docker holds a pre-existing probe, the fake go leaves a new one). It fails on the old run ("the probe left by the legs was not removed") and passes now.

D-1480: served bundles.members lags main after a bundle membership change

registry-sync.yml now also runs on a push to main that touches catalog.json (the .bundles the drill compares), registry.json or counts.json. The daily schedule and workflow_dispatch are unchanged, and no secret is added (still only CLOUDFLARE_WORKER_SYNC_TOKEN, which the daily run already uses).

Test: scripts/ci/tests/test_registry_sync_triggers.py (stdlib only; picked up by the existing unittest discover in hygiene) checks the schedule is kept, the push paths, and that no other secret appears. It fails on the old workflow and passes now.

Not verified here: the worker fetching fresh content right after the push (no production access from here); the first merge that touches a projection will show it.

Commands run

  • bash scripts/drill/isolation-levels/selftest.sh: all ok (10 cases); with the old run, case 10 fails
  • python3 -m unittest scripts.ci.tests.test_registry_sync_triggers -v: 3 ok; with the old workflow, 1 fails
  • python3 -m unittest discover -s scripts/ci/tests: 86 tests, 13 failures, all in test_verify_published_checksums.py (--signatures needs --published-sha256), a file this PR does not touch
  • shellcheck is not installed here, so the shell edit was not linted

admin added 2 commits October 26, 2026 06:13
…s (D-1481)

scenario-01-local-only refuses to cut the network while a container runs; a
nself-ci-probe-* container left by the gVisor leg of the drill before it made
the nightly red. The drill now removes, on exit, the probe containers (label
nself.ci.probe=1) that were not there when it started.
…ojection (D-1480)

The served bundles.members lagged main after a bundle membership change until
the daily run. Also trigger on catalog.json, registry.json and counts.json
changes on main; the daily schedule and the secret are unchanged.
@acamarata
acamarata merged commit 691fd96 into main Oct 26, 2026
22 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant