Skip to content

fix(build): ignore stdin on remote ssh so concurrent calls cannot dea…#4

Open
gabbelitoV2 wants to merge 1 commit into
ConvoyPanel:mainfrom
gabbelitoV2:fix/prefetch-stdin-deadlock
Open

fix(build): ignore stdin on remote ssh so concurrent calls cannot dea…#4
gabbelitoV2 wants to merge 1 commit into
ConvoyPanel:mainfrom
gabbelitoV2:fix/prefetch-stdin-deadlock

Conversation

@gabbelitoV2

Copy link
Copy Markdown
Contributor

…dlock

cf runs ssh with stdin inherited from the interactive terminal. Building many recipes at once deadlocks the prefetch stage: concurrent prefetch ssh calls (mkdir and ISO existence check in captureRemote) plus a long build stream all share fd 0 and block each other, the classic parallel-ssh-eats-stdin footgun. A stalled prefetch never reaches its wget, so it holds a queue slot forever while the download itself takes seconds. Use stdin ignore (ssh -n) for the non-interactive captureRemote and the build stream; nothing there reads stdin. Verified on a 16-recipe build: prefetch runs 3 concurrent downloads with live progress instead of stalling at 0.

…dlock

cf runs ssh with stdin inherited from the interactive terminal. Building many recipes at once deadlocks the prefetch stage: concurrent prefetch ssh calls (mkdir and ISO existence check in captureRemote) plus a long build stream all share fd 0 and block each other, the classic parallel-ssh-eats-stdin footgun. A stalled prefetch never reaches its wget, so it holds a queue slot forever while the download itself takes seconds. Use stdin ignore (ssh -n) for the non-interactive captureRemote and the build stream; nothing there reads stdin. Verified on a 16-recipe build: prefetch runs 3 concurrent downloads with live progress instead of stalling at 0.
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