Skip to content

ci: hunt the wedge with concurrent runs, not CPU spinners (#564) - #567

Merged
ohohoreilly merged 1 commit into
masterfrom
ohohoreilly/564-hunt-concurrency
Sep 18, 2026
Merged

ohohoreilly merged 1 commit into
masterfrom
ohohoreilly/564-hunt-concurrency

Conversation

@ohohoreilly

Copy link
Copy Markdown
Member

ci: hunt the wedge with concurrent runs, not CPU spinners (#564)

The first version of this workflow took 35 arm samples without once
reproducing #564, while CI reproduces it about one run in sixteen. Two
reasons, both fixed here.

It modelled load as four CPU spinners behind a single test binary. CI's
make test runs four real test binaries at once, so the contention is for
disk, memory and the scheduler as well as CPU. Run copies of the fixture
concurrently instead: the right kind of load, and four samples per round
rather than one.

And it stopped on any non-zero exit. The one failure it did catch was
ImportReplication -- a different arm flake, the fixture racing its own
shutdown and getting "could not connect to server; Connection refused" after
the server had logged Shutdown() complete -- which ended the batch at 15 of
20 samples without touching the thing being hunted. Now only a
GracefulShutdownUnresponsiveSlave failure stops the batch; everything else is
counted and reported per copy.

Also distinguishes the two ways the graceful fixture can fail: with a Reap
timeout, where #565's interrogation produces the dump this is all for, and
without one, which would be a different failure mode worth knowing about.

The first version of this workflow took 35 arm samples without once
reproducing #564, while CI reproduces it about one run in sixteen. Two
reasons, both fixed here.

It modelled load as four CPU spinners behind a single test binary. CI's
`make test` runs four real test binaries at once, so the contention is for
disk, memory and the scheduler as well as CPU. Run copies of the fixture
concurrently instead: the right kind of load, and four samples per round
rather than one.

And it stopped on any non-zero exit. The one failure it did catch was
ImportReplication -- a different arm flake, the fixture racing its own
shutdown and getting "could not connect to server; Connection refused" after
the server had logged Shutdown() complete -- which ended the batch at 15 of
20 samples without touching the thing being hunted. Now only a
GracefulShutdownUnresponsiveSlave failure stops the batch; everything else is
counted and reported per copy.

Also distinguishes the two ways the graceful fixture can fail: with a Reap
timeout, where #565's interrogation produces the dump this is all for, and
without one, which would be a different failure mode worth knowing about.
@ohohoreilly ohohoreilly self-assigned this Sep 18, 2026
@ohohoreilly
ohohoreilly merged commit 6ba1f4c into master Sep 18, 2026
9 of 10 checks passed
@ohohoreilly
ohohoreilly deleted the ohohoreilly/564-hunt-concurrency branch September 18, 2026 02:31
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