Re: t5401-update-hooks test failure
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Feb 9, 2010, 19:26 UTC
- Message-ID
- <20100209192628.GC28936@spearce.org>
- In-Reply-To
- <alpine.LFD.2.00.1002091337421.1681@xanadu.home>
Nicolas Pitre <nico@fluxnic.net> wrote:
Show 12 quoted lines
> On Tue, 9 Feb 2010, Shawn O. Pearce wrote: > > > > builtin-send-pack.c clearly isn't stopping early while processing > > the stream, since we see later messages from the post-receive and > > post-update hooks just fine. > > > > So I think the only code that is in question is the case 2 arm of > > recv_sideband(). But to be honest, I can't find any fault with it. > > Note that strict order of messages passed through the sideband can't be > relied upon. Often you have sideband 1 connected to stdin and sideband > 2 connected to stderr,
Oh. Sure. But that isn't really the case here.
The messages are all coming down side band #2, before we write anything down side band #1. The missing message in question should have appeared somewhere in the middle of that side band #2 stream that we are seeing in the test output. Given that its all serialized down into a single stream by the parent process receive-pack, we really shouldn't see the messages out of order.
> and they are linked with pipes, and various > factors such as stdio buffering or even printf implementation in the C > lib
The only way I can see this missing message happening is if the C library isn't flushing the stdio buffer before the hook process exits. Given that the hook process is a /bin/sh shell script, and its using echo to print its messages... I'm at a loss for how to fix that in Git.
Unless its the recv_sideband() somehow skipping a line. But I can't see it doing that.
-- Shawn.