[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Update (etc.) hangs with Serf

From: Lieven Govaerts <svnlgo_at_mobsol.be>
Date: Sun, 20 Sep 2009 22:04:15 +0200

On Thu, Sep 17, 2009 at 11:58 PM, Lieven Govaerts <svnlgo_at_mobsol.be> wrote:
> This particular script doesn't trigger a hang on my machine, but I get
> a reproducible hang in svnsync with serf 0.3 now which I've reported a
> while ago as issue 3424. Big chance that it's the same issue as you
> (and others) are seeing.

I've fixed the issue I've been seeing, but it's related to opening a
child process. So, unless you're using an external diff program, this
fix can't solve your problem.

Next time it hangs, could you see with wireshark (or another tcp dump
program) if you get ZeroWindow packets? The issue I solved caused serf
to hang in apr_pollset_poll, with no sockets to listen on. Maybe it
can be triggered in other ways.

Lieven

>
> Some specifics: it's always hanging in apr_pollset_poll(), and it only
> triggers on https.
>
> My guess is that it is related to a connection close at max. number of
> requests / connection.
>
> Looking into it.
>
> On Thu, Sep 17, 2009 at 4:45 PM, Julian Foad <julianfoad_at_btopenworld.com> wrote:
>> I often find an update (or merge or perhaps other things) hangs
>> indefinitely at some point, when using Serf.
>>
>> If I break (ctrl-C) and then repeat the update it carries on a similar
>> amount further. When I hit this problem with a merge I'm stuck because
>> merge doesn't like being re-started.
>>
>> If I specify "http-library=neon" instead of serf, it doesn't hang and it
>> completes properly.
>>
>> Repro script:
>>
>> [[[
>> svn co --quiet https://svn.collab.net/repos/svn/branches/svnsync-obliterate@39389 wc
>> svn merge ^/trunk_at_38960 wc --config-option=servers:global:http-library=serf
>> svn --version
>> ]]]
>>
>> Output:
>>
>> [[[
>> $ sh -x hang-test.sh
>> + svn co --quiet https://svn.collab.net/repos/svn/branches/svnsync-obliterate@39389 wc
>> + svn merge ^/trunk_at_38960 wc --config-option=servers:global:http-library=serf
>> --- Merging r38948 through r38960 into 'wc':
>> U    wc/subversion/include/svn_wc.h
>> U    wc/subversion/libsvn_wc/deprecated.c
>> U    wc/subversion/libsvn_wc/lock.c
>> U    wc/subversion/libsvn_wc/adm_crawler.c
>> U    wc/subversion/libsvn_client/revisions.c
>> U    wc/subversion/libsvn_client/patch.c
>> U    wc/subversion/libsvn_client/checkout.c
>> U    wc/subversion/tests/cmdline/export_tests.py
>> [### here it hung and I pressed ctrl-C]
>> /home/julianfoad/src/subversion-trunk2/subversion/svn/util.c:900: (apr_err=4)
>> /home/julianfoad/src/subversion-trunk2/subversion/libsvn_client/merge.c:9283: (apr_err=4)
>> /home/julianfoad/src/subversion-trunk2/subversion/libsvn_client/merge.c:7915: (apr_err=4)
>> /home/julianfoad/src/subversion-trunk2/subversion/libsvn_client/merge.c:7596: (apr_err=4)
>> /home/julianfoad/src/subversion-trunk2/subversion/libsvn_client/merge.c:4685: (apr_err=4)
>> /home/julianfoad/src/subversion-trunk2/subversion/libsvn_ra_serf/update.c:2241: (apr_err=4)
>> svn: Error retrieving REPORT (4): Interrupted system call
>> + svn --version
>> svn, version 1.7.0 (dev build)
>>   compiled Sep 17 2009, 11:13:33
>>
>> Copyright (C) 2009 The Subversion Corporation.
>> This software consists of contributions made by many people;
>> see the NOTICE file for more information.
>> Subversion is open source software, see http://subversion.tigris.org/
>>
>> The following repository access (RA) modules are available:
>>
>> * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
>>  - handles 'http' scheme
>>  - handles 'https' scheme
>> * ra_svn : Module for accessing a repository using the svn network protocol.
>>  - with Cyrus SASL authentication
>>  - handles 'svn' scheme
>> * ra_local : Module for accessing a repository on local disk.
>>  - handles 'file' scheme
>> * ra_serf : Module for accessing a repository via WebDAV protocol using serf.
>>  - handles 'http' scheme
>>  - handles 'https' scheme
>> ]]]
>>
>> And here's what it looks like with Neon specified instead of Serf:
>>
>> [[[
>> $ sh -x hang-test.sh
>> + svn co --quiet https://svn.collab.net/repos/svn/branches/svnsync-obliterate@39389 wc
>> + svn merge '^/trunk_at_38960' wc --config-option=servers:global:http-library=neon
>> --- Merging r38948 through r38960 into 'wc':
>> U    wc/subversion/include/svn_wc.h
>> U    wc/subversion/libsvn_wc/deprecated.c
>> U    wc/subversion/libsvn_wc/lock.c
>> U    wc/subversion/libsvn_wc/adm_crawler.c
>> U    wc/subversion/libsvn_client/revisions.c
>> U    wc/subversion/libsvn_client/patch.c
>> U    wc/subversion/libsvn_client/checkout.c
>> U    wc/subversion/tests/cmdline/export_tests.py
>> U    wc/subversion/tests/cmdline/merge_tests.py
>> U    wc/subversion/svnversion/main.c
>>  U   wc/build/win32
>> U    wc/contrib/client-side/emacs/psvn.el
>> + svn --version
>> svn, version 1.7.0 (dev build)
>>   compiled Sep 17 2009, 11:13:33
>> [...]
>> ]]]
>>
>> svn is trunk_at_39389
>> neon is 0.26.1
>> serf is 0.3.0
>>
>> The point at which it hangs is consistent for a given operation: for
>> example, every time I run that recipe it hangs after printing
>> "export_tests.py".
>>
>> It feels to me like there is some data transfer size setting somewhere,
>> which makes it hang for me (and I've heard other reports), but not for
>> most people.
>>
>> I've been seeing this effect for weeks but have only today investigated
>> and confirmed that it exists with serf and not neon, and with latest svn
>> build, and is somewhat reproducible.
>>
>> Any ideas?
>>
>> - Julian
>>
>> ------------------------------------------------------
>> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2396028
>>
>

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2397136
Received on 2009-09-20 22:04:48 CEST

This is an archived mail posted to the Subversion Dev mailing list.