Skip to content

tests: Run install config and printconfig --all in one test - #14

Closed
cgwalters-bot wants to merge 1 commit into
mainfrom
bot/install-config-race
Closed

cgwalters-bot wants to merge 1 commit into
mainfrom
bot/install-config-race

Conversation

@cgwalters-bot

@cgwalters-bot cgwalters-bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

The container integration tests run in parallel under libtest-mimic. printconfig --all writes /run/bootc/install/10-test.toml and removes it when it finishes, while install config runs bootc install print-configuration, which scans that same directory. load_config() lists the fragments first and reads them afterwards. If the file is removed between those two steps, the read fails with Loading configuration: No such file or directory (os error 2). This hit a fork CI run (job log).

The config search path is hardcoded, so the --all test can't use a separate root. Instead, the two checks now run one after the other in a single install config test: first the plain read, then the --all one with the fragment.

Testing was on a 16-core RHEL 10 devspace with the default just build image (centos-stream10, ostree). Each test run was podman run ... bootc-integration-tests container config, which selects just these tests.

  • Before the change: 0/1050 failures when run one at a time; the window is only a few microseconds. With 16 copies running at once to load the CPU, there were 3/8000 failures (plus 1/1600 in an earlier pass), each with the error above.
  • After the change: 0/8000 failures under the same 16-way load.
  • just test-container-integration: 9/9 passed. cargo fmt --check and the Makefile's gating clippy config pass for tests-integration.

It's rare upstream. I searched the logs of every failed job from the last 100 ci.yml runs on bootc-dev/bootc (about 8 days; 28 jobs whose container-test step failed) and found no hits for this error.

bootc requires DCO: the commits have no Signed-off-by, so a maintainer must sign off before merging (e.g. git rebase --signoff <base> and force-push).

Generated-by: https://github.com/cgwalters/#llms


Review draft in cgwalters-forge, not upstream yet. This section is removed when the PR is opened upstream.

  • Upstream: bootc-dev/bootc, base main
  • Board item: PVTI_lAHOAQ_SPs4Bj2Gizg8hb8E

To review:

  • Approve to open it upstream, ready for review.
  • Comment /draft, then approve, to open it upstream as a draft (/ready undoes that).
  • Close to drop it.
  • Edit the title and description freely: they become the upstream PR's. Review comments are addressed with fixup commits and a reply here.

The container tests run in parallel under libtest-mimic, and the
printconfig --all test creates and removes /run/bootc/install/10-test.toml
while the plain install config test scans that same directory. If the
fragment is deleted between the scan and the read, the plain test fails
with "Loading configuration: No such file or directory". This showed up
as a flake in CI.

There's no way to point bootc at a different config root, so just run
the two checks sequentially in a single test.

Generated-by: AI
@cgwalters-bot

Copy link
Copy Markdown
Collaborator Author

Superseded by #24, which fixes the same race in config loading and also serializes the two tests; closing.

Generated-by: https://github.com/cgwalters/#llms

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