Hello Graham, Thank you very much for the threads dump. It looks like socket.connect(...) is called but never exits:
> "pool-1-svnkit-thread-2" daemon prio=10 tid=0x00007f07f051d800 nid=0x7ef7 > runnable [0x00007f07e4611000] > java.lang.Thread.State: RUNNABLE > at java.net.PlainSocketImpl.socketConnect(Native Method) > at > java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) > - locked <0x00000000ed91c468> (a java.net.SocksSocketImpl) > at > java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) > at > java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) > at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) > at java.net.Socket.connect(Socket.java:579) > at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618) > at > org.tmatesoft.svn.core.internal.util.SVNSocketConnection.run(SVNSocketConnection.java:57) I'll check what might be the problem there (usually it works, so should be something specific for your environment/configuration). Regarding the way Jenkins configures SVNKit - I do not know how they do it, I just said that SVNKit could be configured in various ways and Jenkins (or other tool) could make SVNKit to use default config, or may not do it. But I think they do. > The native subversion client performs SNI correctly out of the box, as does > Java 7. Svnkit doesn't set the name of the host as required, and so doesn't > work. Could you please provide more information on that? Do you run "jsvn" with Java 7 and necessary -D system property and SNI is still not working? Does it work with other Java software? Alexander Kitaev, TMate Software, http://subgit.com/ - Svn to Git Migration! http://svnkit.com/ - Java [Sub]Versioning Library! http://hg4j.com/ - Java Mercurial Library! http://sqljet.com/ - Java SQLite Library! On 4 February 2013 23:10, Graham Leggett <minf...@sharp.fm> wrote: > On 04 Feb 2013, at 11:57 PM, Graham Leggett <minf...@sharp.fm> wrote: > >> I tried this, and "jsvn checkout [url] path" hangs solid, and won't shut >> down in response to ^C. The native svn client works fine. > > The thread dump while svnkit is stuck looks like this: > > Full thread dump Java HotSpot(TM) 64-Bit Server VM (23.7-b01 mixed mode): > > "pool-1-svnkit-thread-2" daemon prio=10 tid=0x00007f07f051d800 nid=0x7ef7 > runnable [0x00007f07e4611000] > java.lang.Thread.State: RUNNABLE > at java.net.PlainSocketImpl.socketConnect(Native Method) > at > java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) > - locked <0x00000000ed91c468> (a java.net.SocksSocketImpl) > at > java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) > at > java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) > at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) > at java.net.Socket.connect(Socket.java:579) > at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618) > at > org.tmatesoft.svn.core.internal.util.SVNSocketConnection.run(SVNSocketConnection.java:57) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) > at java.util.concurrent.FutureTask.run(FutureTask.java:166) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:722) > > "pool-1-svnkit-thread-1" daemon prio=10 tid=0x00007f07f0511800 nid=0x7ef6 > waiting on condition [0x00007f07e4712000] > java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0x00000000c572e3c8> (a > java.util.concurrent.SynchronousQueue$TransferStack) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) > at > java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:458) > at > java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359) > at > java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:925) > at > java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:722) > > "Thread-2" daemon prio=10 tid=0x00007f07f0332800 nid=0x7ef5 waiting on > condition [0x00007f07e4e76000] > java.lang.Thread.State: TIMED_WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0x00000000c5746b30> (a > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) > at > java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) > at > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082) > at > java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090) > at > java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807) > at > java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:722) > > "Service Thread" daemon prio=10 tid=0x00007f07f00ef000 nid=0x7ef3 runnable > [0x0000000000000000] > java.lang.Thread.State: RUNNABLE > > "C2 CompilerThread1" daemon prio=10 tid=0x00007f07f00ed000 nid=0x7ef2 > runnable [0x0000000000000000] > java.lang.Thread.State: RUNNABLE > > "C2 CompilerThread0" daemon prio=10 tid=0x00007f07f00ea000 nid=0x7ef1 waiting > on condition [0x0000000000000000] > java.lang.Thread.State: RUNNABLE > > "Signal Dispatcher" daemon prio=10 tid=0x00007f07f00e7800 nid=0x7ef0 waiting > on condition [0x0000000000000000] > java.lang.Thread.State: RUNNABLE > > "Finalizer" daemon prio=10 tid=0x00007f07f009b000 nid=0x7eef in Object.wait() > [0x00007f07e5d7c000] > java.lang.Thread.State: WAITING (on object monitor) > at java.lang.Object.wait(Native Method) > - waiting on <0x00000000c57b6220> (a > java.lang.ref.ReferenceQueue$Lock) > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135) > - locked <0x00000000c57b6220> (a java.lang.ref.ReferenceQueue$Lock) > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151) > at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177) > > "Reference Handler" daemon prio=10 tid=0x00007f07f0099000 nid=0x7eee in > Object.wait() [0x00007f07e5e7d000] > java.lang.Thread.State: WAITING (on object monitor) > at java.lang.Object.wait(Native Method) > - waiting on <0x00000000c57b5ce0> (a java.lang.ref.Reference$Lock) > at java.lang.Object.wait(Object.java:503) > at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133) > - locked <0x00000000c57b5ce0> (a java.lang.ref.Reference$Lock) > > "main" prio=10 tid=0x00007f07f0008000 nid=0x7ee8 in Object.wait() > [0x00007f07f5d20000] > java.lang.Thread.State: TIMED_WAITING (on object monitor) > at java.lang.Object.wait(Native Method) > - waiting on <0x00000000ed92abd8> (a > org.tmatesoft.svn.core.internal.util.SVNSocketConnection) > at > org.tmatesoft.svn.core.internal.util.SVNSocketConnection.isSocketConnected(SVNSocketConnection.java:47) > - locked <0x00000000ed92abd8> (a > org.tmatesoft.svn.core.internal.util.SVNSocketConnection) > at > org.tmatesoft.svn.core.internal.util.SVNSocketFactory.connect(SVNSocketFactory.java:127) > at > org.tmatesoft.svn.core.internal.util.SVNSocketFactory.createSSLSocket(SVNSocketFactory.java:93) > at > org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.connect(HTTPConnection.java:271) > at > org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:422) > at > org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:365) > at > org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:353) > at > org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:708) > at > org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:628) > at > org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:103) > at > org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1016) > at > org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180) > at > org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) > at > org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) > at > org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) > at > org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.checkout(SvnNgAbstractUpdate.java:706) > at > org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:14) > at > org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:9) > at > org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20) > at > org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) > at > org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235) > at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:291) > at > org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:777) > at > org.tmatesoft.svn.cli.svn.SVNCheckoutCommand.run(SVNCheckoutCommand.java:99) > at > org.tmatesoft.svn.cli.AbstractSVNCommandEnvironment.run(AbstractSVNCommandEnvironment.java:142) > at > org.tmatesoft.svn.cli.AbstractSVNLauncher.run(AbstractSVNLauncher.java:79) > at org.tmatesoft.svn.cli.svn.SVN.main(SVN.java:26) > at org.tmatesoft.svn.cli.SVN.main(SVN.java:22) > > "VM Thread" prio=10 tid=0x00007f07f0091800 nid=0x7eed runnable > > "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f07f0015800 nid=0x7ee9 > runnable > > "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f07f0017800 nid=0x7eea > runnable > > "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f07f0019000 nid=0x7eeb > runnable > > "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f07f001b000 nid=0x7eec > runnable > > "VM Periodic Task Thread" prio=10 tid=0x00007f07f00fa000 nid=0x7ef4 waiting > on condition > > JNI global references: 172 > > Heap > PSYoungGen total 253952K, used 81352K [0x00000000ec0b0000, > 0x0000000100000000, 0x0000000100000000) > eden space 196800K, 13% used > [0x00000000ec0b0000,0x00000000edb6f560,0x00000000f80e0000) > from space 57152K, 94% used > [0x00000000fc340000,0x00000000ff7f2d10,0x00000000ffb10000) > to space 65088K, 0% used > [0x00000000f80e0000,0x00000000f80e0000,0x00000000fc070000) > ParOldGen total 66624K, used 44077K [0x00000000c4200000, > 0x00000000c8310000, 0x00000000ec0b0000) > object space 66624K, 66% used > [0x00000000c4200000,0x00000000c6d0b410,0x00000000c8310000) > PSPermGen total 24384K, used 12058K [0x00000000bf000000, > 0x00000000c07d0000, 0x00000000c4200000) > object space 24384K, 49% used > [0x00000000bf000000,0x00000000bfbc6878,0x00000000c07d0000) > > Regards, > Graham > -- >