On Saturday, June 29, 2013 01:18:16 PM Stefan Sperling wrote:
> On Fri, Jun 28, 2013 at 03:36:38PM -0700, Alexey Neyman wrote:
> > [copying dev@ because I found what the issue is]
> > 
> > Hi,
> > 
> > Did some further investigation and it turns out that SVN1.8 client creates
> > more connections to the server when performing 'svn merge' - exceeding
> > the xinetd's default number of connections per source (10) and indeed,
> > closing the connection on an unsuspecting client. After increasing the
> > number of connections per source to unlimited, the merge went through.
> > 
> > Here are some statistics:
> > 
> > SVN 1.7, merge --reintegrate
> > 13 connections total, 5 concurrent connections maximum
> > 
> > SVN 1.8, merge
> > 18 connections total, 11 concurrent connections maximum
> > 
> > SVN 1.8, merge --reintegrate
> > 5 connections total, 3 concurrent connections maximum
> > 
> > So, it looks like the new code for automatic detection of "reintegration
> > merges" in 1.8 spawns a bunch of additional connections. So, the question
> > is - what is the maximum number of connections that a client can create
> > to a server? Does it depend on the size of the change? Size of the
> > svn:mergeinfo?
> > 
> > I am not comfortable leaving the server configuration at "unlimited",
> > seeing that xinetd limit is a safety net against runaway client bringing
> > down the server.
> I'm not entirely sure how to estimate the largest number
> of connections made by 'svn merge'.
> 
> Note that the number of connections also depends on the amount of
> svn:externals involved in checkouts and updates. One new connection
> is opened for each external.
> 
> You might be interested in Ivan's RA session reuse patch:
> http://svn.haxx.se/dev/archive-2013-06/0292.shtml
> http://subversion.tigris.org/issues/show_bug.cgi?id=3763
> This will probably be in 1.9, so it won't help you now. But I still
> thought it was worth mentioning since it will address your problem
> in the long term.

Sorry for a late response. The checked out WC I did a merge in did not have any 
externals, but it had 8 svn:mergeinfo entries, if it matters.

I think at the very least this issue needs to be reflected in the "SVN book". 
Right now, 
the section "svnserve via xinetd" does not mention it, nor does the example 
configuration specify an unlimited number of connections per source. Given that 
xinentd's default is 10 connections per source IP, it is fairly easy to go over 
that limit.

As to session reuse: am I right that it is going to avoid closing connections 
and reuse 
it instead of opening a new one? In that case, it does not solve an issue with 
concurrent connections (as they're still active, they can't be reused).

Regards,
Alexey.

Reply via email to