On Feb 28, 2014, at 22:15, Jeff King wrote:
On Fri, Feb 28, 2014 at 03:26:28PM -0800, Conley Owens wrote:

rungit() {
   mkdir $1
   GIT_DIR=$1 git init --bare
   echo '[remote "aosp"]' > $1/config
   echo '    url =
https://android.googlesource.com/platform/external/tinyxml2' >>
GIT_DIR=$1 git fetch aosp +refs/heads/master:refs/remotes/aosp/ master

I don't think this is affecting your test, but you probably want ">>" to
append to the config for the first line, too. Otherwise you are
overwriting some of git's default settings.

I replaced it with a call to git config in my version.

When everything cools, you can see that there are some fetches hanging
$ ps | grep 'git fetch'
63310 ttys004    0:00.01 git fetch aosp

I can't reproduce here on Linux. Can you find out what the processes are
doing with something like strace?

I can't reproduce, mostly, on Mac OS X 10.5.8 or 10.6.8.

What I mean by mostly is that the very first time I ran the test script I got approximately 36 of these errors:

fatal: unable to access 'https://android.googlesource.com/platform/external/tinyxml2/' : Unknown SSL protocol error in connection to android.googlesource.com: 443

The rest of the fetches completed.  That was with Git

However, I was never able to reproduce those errors again. All the subsequent runs completed all fetches successfully using that same Git version so I also tried Git, and Git on the original and another machine.

I am, however NAT'd, so it's possible the NAT was somehow responsible for the initial 36 failures.

Perhaps you are seeing a similar issue.

You might try setting these sysctl variables:

# Timeout new TCP connections after 30 seconds instead of 75
# Always keep alive TCP connections
# Start keep alive checks after 30 seconds instead of 2 hours
# Wait 5 seconds between probes instead of 75
# Note that 8 probes in a row must fail to drop the connection

then running your test again and see if the hanging git fetch processes die with some kind of failed connection error within about 70 seconds or so. With the default sysctl settings, even with Git enabling keep alives, it would likely take a bit over two hours for a dead connection to be noticed.

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to