Subject: Re: Request: timeout option for remote operations, esp. "git fetch"

From: "H. Peter Anvin" <[email-masked]>
Date: Tue, 12 Nov 2013 10:33:49 -0800

On 11/12/2013 09:45 AM, Junio C Hamano wrote:
> "H. Peter Anvin" <[email-masked]> writes:
> 
>> On 11/10/2013 12:17 PM, Eric Wong wrote:
>>> "H. Peter Anvin" <[email-masked]> wrote:
>>>> When a remote server is unavailable or very slow, some git commands can
>>>> stall out indefinitely.  It would be a very good thing if remote
>>>> commands -- but especially git fetch -- could be given a timeout.
>>>
>>> We've had SO_KEEPALIVE on git and ssh transports since e47a8583 (2011-12-06)
>>> SO_KEEPALIVE for http was added recently (a15d069a) and will be in git 1.8.5
>>>
>>> Do you want a shorter timeout for slow (but still alive) servers?
>>>
>>
>> Yes; note that SO_KEEPALIVE only guarantees that the server is alive at
>> the TCP socket level.  If the server is overloaded but technically alive
>> it may still make no meaningful forward progress.
> 
> Which means that your original wish may not be granted with
> SO_KEEPALIVE at all, no?  I was wondering if you wanted a forced
> timeout based on alarm(2), something similar to what you added to
> git-daemon in 960deccb (git-daemon: timeout, eliminate double DWIM,
> 2005-10-19).
> 

Yes, something more like that on the client end.  SO_KEEPALIVE is better
than nothing, but not really good enough.

	-hpa