mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-11-14 12:58:09 +00:00
bdebb7d4cf
Parallel::ForkManager does not fork when max_procs is 0: start() returns 0 in the original process. start_build_worker took that 0 as a forked worker. It closed the only writer of the gate pipe, read end-of-file and exited 127, so both worker loops in buildrpms.pl stopped before they built a package or updated a repository. start_build_worker now compares $$ before and after the fork callback. When the callback returned 0 in the same process, it closes the gate and returns 0, and the caller runs the work under the locks it already holds. Both loops call start_build_worker, so both are covered. build_worker_nofork.t passes with this change. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>