mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-12 12:36:23 +00:00
ca1f2f3a366af9cbe443b7e2bb20aaa0d5cfb5e4
The parallel perl-package builder scrubbed each package's chroot AND bootstrap (`mock --uniqueext <pkg> --scrub=chroot --scrub=bootstrap`) as soon as that package finished, mid-batch. The comment assumed the --uniqueext made this sibling-safe, but mock's bootstrap scrub ignores --uniqueext and removes the CONFIG-LEVEL shared bootstrap cache (/var/cache/mock/<cfg>-bootstrap/, keyed by config name, not uniqueext). Under concurrency a faster sibling's post-build scrub deleted that shared cache while a slower sibling was still setting up its buildsrpm chroot and about to bind-mount it, so the bind failed with mount rc=32 and the whole target failed a build that was otherwise fine. Observed: on alma+epel-10-ppc64le, perl-Sys-Virt (the slowest, a libvirt C binding) died at --buildsrpm binding /var/cache/mock/alma+epel-10-ppc64le-bootstrap/yum_cache ~1s after two faster siblings had just scrubbed that shared bootstrap; the other five perl packages passed. Non-deterministic and load-triggered, so it surfaced under the 3-way concurrent CD load. Reclaim only the (uniqueext-local) build chroot per package during the batch, and defer the shared bootstrap reclamation to a single serialized pass after all workers join, when nothing can be binding it. Disk reclamation is preserved (the ~GB build chroots are still freed immediately; the bootstrap roots + shared cache are freed at batch end). Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
Description
No description provided
Languages
C
89%
Perl
6.7%
Assembly
1.4%
JavaScript
0.8%
Makefile
0.6%
Other
1.4%