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

svn:externals keeps connections open until end

From: Joey Hess <joey_at_kitenet.net>
Date: 2003-07-29 19:30:27 CEST

It seems that if I do a svn up on a working copy with lots of
svn:externals (including some externals that have externals of their
own), over svn+ssh, subversion keeps all the ssh connections open until
it's done updating the whole working copy. I don't see this one in the
issue tracker.

There are 25 svn:externals in all involved in checking out this tree. The
tree root has 17 externals, 3 more are in a sub directory (which is itself an
external), and a subdirectory of that sub directory has the rest.

I was doing the checkout on the subversion server, and accidentially
using svn+ssh despite the fact that most repos were local. At the same
time, on a client, I was doing a svn co of the same tree.

The result was that several hundred processes were spawned. Below is an
example of what the relevant parts of the process tree looks like if I
only do a svn up on the server. Running it on the client too doubles the
number of ssh server processes and svnserve's.

At this point I think I was at about 350 processes on the server, which
normally runs 100. (Unfortunatly, I had gone to bed at this point). Then
this point something else pushed it over the top and it died of process
starvation. I have not reconstructed the details but it was not able to
run user processes this morning, though I was able to ssh in as root and
kill a logjam of svn processes and postfix processes.

Anyway, I hope that in the future subversion can free resources
associated with checking out externals once it's done with them, rather
than waiting until the end of the whole checkout to clean up.

 3154 pts/4 S 0:01 | \_ svn.distrib up
 3155 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3177 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3192 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3205 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3218 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3232 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3246 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3260 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3274 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3288 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3303 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3317 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3350 pts/4 S 0:00 | \_ ssh svn.mooix.net svnserve -t
 3363 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3395 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3409 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3426 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3455 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3468 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3499 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3512 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3527 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3559 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3583 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 3597 pts/4 S 0:00 | \_ ssh kitenet.net svnserve -t
 ...
 3156 ? S 0:00 \_ sshd: joey [priv]
 3167 ? S 0:00 | \_ sshd: joey@notty
 3168 ? S 0:00 | \_ svnserve -t
 3178 ? S 0:00 \_ sshd: joey [priv]
 3180 ? S 0:00 | \_ sshd: joey@notty
 3181 ? S 0:00 | \_ svnserve -t
 3193 ? S 0:00 \_ sshd: joey [priv]
 3195 ? S 0:00 | \_ sshd: joey@notty
 3196 ? S 0:00 | \_ svnserve -t
 3206 ? S 0:00 \_ sshd: joey [priv]
 3208 ? S 0:00 | \_ sshd: joey@notty
 3209 ? S 0:00 | \_ svnserve -t
 3219 ? S 0:00 \_ sshd: joey [priv]
 3222 ? S 0:00 | \_ sshd: joey@notty
 3223 ? S 0:00 | \_ svnserve -t
 3233 ? S 0:00 \_ sshd: joey [priv]
 3236 ? S 0:00 | \_ sshd: joey@notty
 3237 ? S 0:00 | \_ svnserve -t
 3247 ? S 0:00 \_ sshd: joey [priv]
 3250 ? S 0:00 | \_ sshd: joey@notty
 3251 ? S 0:00 | \_ svnserve -t
 3261 ? S 0:00 \_ sshd: joey [priv]
 3264 ? S 0:00 | \_ sshd: joey@notty
 3265 ? S 0:00 | \_ svnserve -t
 3275 ? S 0:00 \_ sshd: joey [priv]
 3278 ? S 0:00 | \_ sshd: joey@notty
 3279 ? S 0:00 | \_ svnserve -t
 3289 ? S 0:00 \_ sshd: joey [priv]
 3293 ? S 0:00 | \_ sshd: joey@notty
 3294 ? S 0:00 | \_ svnserve -t
 3304 ? S 0:00 \_ sshd: joey [priv]
 3306 ? S 0:00 | \_ sshd: joey@notty
 3307 ? S 0:00 | \_ svnserve -t
 3319 ? S 0:00 \_ sshd: joey [priv]
 3339 ? S 0:00 | \_ sshd: joey@notty
 3340 ? S 0:00 | \_ svnserve -t
 3351 ? S 0:00 \_ sshd: joey [priv]
 3353 ? S 0:00 | \_ sshd: joey@notty
 3354 ? S 0:00 | \_ svnserve -t
 3364 ? S 0:00 \_ sshd: joey [priv]
 3385 ? S 0:00 | \_ sshd: joey@notty
 3386 ? S 0:00 | \_ svnserve -t
 3396 ? S 0:00 \_ sshd: joey [priv]
 3399 ? S 0:00 | \_ sshd: joey@notty
 3400 ? S 0:00 | \_ svnserve -t
 3410 ? S 0:00 \_ sshd: joey [priv]
 3413 ? S 0:00 | \_ sshd: joey@notty
 3414 ? S 0:00 | \_ svnserve -t
 3431 ? S 0:00 \_ sshd: joey [priv]
 3444 ? S 0:00 | \_ sshd: joey@notty
 3445 ? S 0:00 | \_ svnserve -t
 3456 ? S 0:00 \_ sshd: joey [priv]
 3458 ? S 0:00 | \_ sshd: joey@notty
 3459 ? S 0:00 | \_ svnserve -t
 3469 ? S 0:00 \_ sshd: joey [priv]
 3489 ? S 0:00 | \_ sshd: joey@notty
 3490 ? S 0:00 | \_ svnserve -t
 3500 ? S 0:00 \_ sshd: joey [priv]
 3502 ? S 0:00 | \_ sshd: joey@notty
 3503 ? S 0:00 | \_ svnserve -t
 3513 ? S 0:00 \_ sshd: joey [priv]
 3517 ? S 0:00 | \_ sshd: joey@notty
 3518 ? S 0:00 | \_ svnserve -t
 3528 ? S 0:00 \_ sshd: joey [priv]
 3531 ? S 0:00 | \_ sshd: joey@notty
 3532 ? S 0:00 | \_ svnserve -t
 3560 ? S 0:00 \_ sshd: joey [priv]
 3573 ? S 0:00 | \_ sshd: joey@notty
 3574 ? S 0:00 | \_ svnserve -t
 3584 ? S 0:00 \_ sshd: joey [priv]
 3587 ? S 0:00 | \_ sshd: joey@notty
 3588 ? S 0:00 | \_ svnserve -t
 3598 ? S 0:00 \_ sshd: joey [priv]
 3599 ? S 0:00 \_ sshd: joey [net]

-- 
see shy jo
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Tue Jul 29 19:30:59 2003

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.