[Clark S. Cox III]
> - APR_KILL_{ALWAYS,AFTER_TIMEOUT,ONLY_ONCE} are inappropriate in the
> connection sharing case. When the svn co completed, the shared
> connection was severed, and the second ssh session was disconnected,
> however with those options, the ssh subprocesses of the library-using
> clients (such as Xcode) were properly reaped.
>
> - APR_KILL_NEVER is inappropriate in the GUI client case (ssh
> subprocesses of Xcode were not reaped until Xcode itself was
> terminated).
>
> - APR_JUST_WAIT is inappropriate, as the process (whether it be svn or
> Xcode) that started the master ssh connection blocks until any other
> ssh's using the same shared connection are terminated.
>
> It seems that OpenSSH's connection sharing and svn's use of ssh are
> fundamentally incompatible. At the very least, it doesn't seem that
> there is a simple fix for both issues.
Some years ago, in Debian, I've applied two patches related to ssh
connection sharing. One uses APR_KILL_AFTER_TIMEOUT, because as we've
all noted, SIGKILL causes various problems with connection sharing and
other things. The other is a simple patch to the default
~/.subversion/config file:
[tunnels]
ssh = $SVN_SSH ssh -o ControlMaster=no
so that Subversion's ssh process never controls the shared socket.
It will still _use_ connection sharing, but will not _initiate_ it.
I would have proposed both patches for integration a long time ago, but
the first one depends on a version of OpenSSH patched not to complain
when it is killed with a non-KILL signal; the second depends on a
version of OpenSSH new enough to recognise the 'ControlMaster' option.
I can rely on both things in Debian, but I don't know that all
Subversion installations could.
--
Peter Samuelson | org-tld!p12n!peter | http://p12n.org/
Received on 2009-03-27 19:58:45 CET