Subject: Re: [PATCH] git-remote-testgit: fix race when spawning fast-import

From: Pete Wyckoff <[email-masked]>
Date: Sat, 21 Apr 2012 22:16:08 -0400

[email-masked] wrote on Sun, 22 Apr 2012 01:42 +0200:
> On Sat, Apr 21, 2012 at 07:45:55PM -0400, Pete Wyckoff wrote:
> >
> > @@ -258,6 +264,7 @@ def main(args):
> >  
> >      more = True
> >  
> > +    sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0)
> >      while (more):
> >          more = read_one_line(repo)
> 
> There's another read in do_import(). I am not sure if it also suffers
> from this race condition, but it certainly has the potential.

It just takes one reopen of stdin for the whole program.  So that
one is handled automatically too.

> > +test_expect_success 'racily pushing to local repo' '
> > +	cp -a server server2 &&
> > +	git clone "testgit::${PWD}/server2" localclone2 &&
> > +	test_when_finished "rm -rf server2 localclone2" &&
> > +	(cd localclone2 &&
> > +	echo content >>file &&
> > +	git commit -a -m three &&
> > +	GIT_REMOTE_TESTGIT_SLEEPY=2 git push) &&
> > +	compare_refs localclone2 HEAD server2 HEAD
> > +'
> 
> Should this test be running unconditionally? It will delay the otherwise
> almost instant test by 2 seconds.

More like 6 seconds, in fact, for all three interactions in "git
push".  I'll change the test to add a prereq on TOOSLOW; is there
a better way to leave a test in to document the issue, but have
it skipped?

		-- Pete