Subject: Re: [PATCH v7 10/12] run-command: poll child stdin in addition to stdout

From: "Kristoffer Haugsbakk" <[email-masked]>
Date: Wed, 21 Jan 2026 23:04:24 +0100

On Wed, Jan 21, 2026, at 22:54, Adrian Ratiu wrote:
> Child input feeding might hit the 100ms output poll timeout as a
> side-effect of the ungroup=0 design when feeding multiple children
> in parallel and buffering their outputs.
>
> This throttles the write throughtput as reported by Kristoffer.
>
> Peff also noted that the parent might block if the write pipe is full
> and cause a deadlock if both parent + child wait for one another.
>
> Thus we refactor the run-command I/O loop so it polls on both child
> input and output fds to eliminate the risk of artificial 100ms
> latencies and unnecessarily blocking the main process.
>
> This ensures that parallel hooks are fed data ASAP while maintaining
> responsiveness for (sideband) output.
>
> It's worth noting that in our current design, sequential execution
> is not affected by this because it still uses the ungroup=1 behavior.
>
> Reported-by: Kristoffer Haugsbakk <[email-masked]>
> Suggested-by: Jeff King <[email-masked]>
> Signed-off-by: Adrian Ratiu <[email-masked]>
> ---

Thanks for rewriting the commit message to include some user-level
behavior/symptoms.

>[snip]