On Dec 29, 2013, at 11:45 AM, David Bullock <david.bull...@machaira.com.au> 
wrote:

> Well, the states of those threads look normal enough.  Definitely not
> a resource starvation issue (which is what it 'feels' like).  I guess
> some values are getting lost somewhere.
> 
> Just looking at the stacktrace for the onWritePossible() example
> though ... I'm not able to trace the same execution path through the
> version of the Tomcat trunk, except by going back some weeks/months.
> For example, with:
> 
> "http-nio-127.0.0.1-auto-1-exec-1" daemon prio=5
> tid=0x00007fde4b888000 nid=0x8403 at breakpoint[0x00000001965b4000]
>   java.lang.Thread.State: RUNNABLE
>        at 
> org.apache.catalina.nonblocking.TestWriteListener$DataStreamingServlet$DataStreamWriteListener.onWritePossible(TestWriteListener.java:114)
>        at org.apache.coyote.Response.onWritePossible(Response.java:658)
>        at 
> org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:369)
>        at 
> org.apache.coyote.http11.AbstractHttp11Processor.asyncDispatch(AbstractHttp11Processor.java:1618)
> ... well, the AbstractHttp11Processor.asyncDispatch() method seems to
> have been refactored out in May, earlier this year:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?r1=1478576&r2=1478714&diff_format=h
> 
> Reading the source code and the repository, it seems there has been a
> *lot* of activity around this async stuff in the codebase, and you may
> well get different test results with a more modern version of the
> trunk.

I would agree that there have been lots of updates, but I am running that 
latest update from svn.

$ svn update
At revision 1554057.

Just to make sure Eclipse wasn't doing something weird.  I did a clean on the 
project and watched it rebuild everything.  Looking at the stack trace, I'm 
seeing line numbers that correspond to the correct line numbers when I view the 
subversion repository in my browser, so I believe it's running with the latest 
code.  Also I'm able to trace through the code by the file / line number 
reported in the stack trace.

Thanks for the suggestions, but at this point I'm reasonably confident I 
haven't missed something simple so I've gone ahead and created a bug report.

   https://issues.apache.org/bugzilla/show_bug.cgi?id=55939

Dan


> 
> cheers,
> David.
> David Bullock
> Machaira Enterprises Pty Ltd
> 
> PO Box 31
> Canowindra NSW 2804
> 
> 02 6344 1100
> http://machaira.com.au/
> 
> 
> On 30 December 2013 01:21, Daniel Mikusa <dmik...@gopivotal.com> wrote:
>> On Dec 23, 2013, at 7:55 PM, David Bullock <david.bull...@machaira.com.au> 
>> wrote:
>> 
>>> On 24 December 2013 07:58, Daniel Mikusa <dmik...@gopivotal.com> wrote:
>>>> On Dec 19, 2013, at 8:08 PM, David Bullock <david.bull...@machaira.com.au> 
>>>> wrote:
>>>> 
>>>>> On 20 December 2013 04:10, Daniel Mikusa <dmik...@gopivotal.com> wrote:
>>> 
>>>> Unfortunately, once this problem starts to occur onWritePossible doesn't 
>>>> get called back.
>>> 
>>>> When I take a thread dump of the code, it just shows all of the threads 
>>>> doing nothing.
>>> 
>>>> Increasing timeout doesn't seem to help.  Failures still occur within the 
>>>> same timeframe (i.e. same number requests to the server).  The only affect 
>>>> is to create a delay between when requests stop being processed and the 
>>>> stack trace shows up.
>>> 
>>>>> What happens if you instead pass the ServletOutputStream to the 
>>>>> DataStreamWriteListener's constructor?
>>>> 
>>>> Unfortunately nothing.  I still see the issue.
>>> 
>>> OK, new theory.  At some point, something happens in your onWritePossible
>>> handler which throws an unchecked exception and crashes the Tomcat thread
>>> which is responsible for keeping track of which async servlets are
>>> still wanting to write data and doing appropriate cleanup of the NIO 
>>> selectors/keys.
>> 
>> When onWritePossible is called by Tomcat, it's wrapped in a 
>> try..catch..finally, which catches Throwable.  If it catches something, the 
>> write listener's onError method should get called with the exception.  
>> That's not happening in my unit test, so it doesn't seem like an exception 
>> is being raised in onWritePossible.
>> 
>> See around line 369.
>> 
>>   
>> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?view=markup
>> 
>>> My money would have been on calling getOutputStream() on the response a 
>>> second time
>>> (it throws java.lang.IllegalStateException, which is unchecked), but
>>> you say you got rid of that.
>> 
>> As far as I can tell, you should be able to call getOutputStream() as many 
>> times as you want.  According to the javadoc, it only throws 
>> IllegalStateException if you've called getWriter() and then call 
>> getOutputStream().
>> 
>>  
>> http://tomcat.apache.org/tomcat-8.0-doc/servletapi/javax/servlet/ServletResponse.html#getOutputStream()
>> 
>>> To eliminate other unchecked candidates, make your
>>> onWritePossible() catch java.lang.Throwable and emit appropriate log 
>>> messages
>>> if it catches anything (or more usefully, point a debugger at the catch 
>>> clause).
>> 
>> Tried this.  Unfortunately, it does not catch anything.
>> 
>>> If that doesn't yield success, then I would like to see 2 thread dumps
>>> - once when
>>> onWritePossible() has been called (maybe put in a Thread.sleep(5000) so you
>>> have time to tickle the JVM),
>> 
>> Here's a thread dump from the unit test, which I've paused in the debugger 
>> during the first call to the onWritePossible method.
>> 
>> 2013-12-29 09:07:04
>> Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.45-b08 mixed mode):
>> 
>> "http-nio-127.0.0.1-auto-1-exec-1" daemon prio=5 tid=0x00007fde4b888000 
>> nid=0x8403 at breakpoint[0x00000001965b4000]
>>   java.lang.Thread.State: RUNNABLE
>>        at 
>> org.apache.catalina.nonblocking.TestWriteListener$DataStreamingServlet$DataStreamWriteListener.onWritePossible(TestWriteListener.java:114)
>>        at org.apache.coyote.Response.onWritePossible(Response.java:658)
>>        at 
>> org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:369)
>>        at 
>> org.apache.coyote.http11.AbstractHttp11Processor.asyncDispatch(AbstractHttp11Processor.java:1618)
>>        at 
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:631)
>>        at 
>> org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1576)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1534)
>>        - locked <0x0000000165068000> (a 
>> org.apache.tomcat.util.net.NioChannel)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-Acceptor-0" daemon prio=5 tid=0x00007fde4f07e000 
>> nid=0x8203 runnable [0x0000000197303000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
>>        at 
>> sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241)
>>        - locked <0x0000000165018110> (a java.lang.Object)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:693)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "http-nio-127.0.0.1-auto-1-ClientPoller-1" daemon prio=5 
>> tid=0x00007fde4b89f800 nid=0x8003 runnable [0x0000000197124000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
>>        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:200)
>>        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
>>        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
>>        - locked <0x0000000165030078> (a sun.nio.ch.Util$2)
>>        - locked <0x0000000165030088> (a 
>> java.util.Collections$UnmodifiableSet)
>>        - locked <0x0000000165030028> (a sun.nio.ch.KQueueSelectorImpl)
>>        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1054)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "http-nio-127.0.0.1-auto-1-ClientPoller-0" daemon prio=5 
>> tid=0x00007fde4b89f000 nid=0x7e03 runnable [0x0000000197021000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
>>        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:200)
>>        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
>>        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
>>        - locked <0x0000000165020078> (a sun.nio.ch.Util$2)
>>        - locked <0x0000000165020088> (a 
>> java.util.Collections$UnmodifiableSet)
>>        - locked <0x0000000165020028> (a sun.nio.ch.KQueueSelectorImpl)
>>        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1054)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "ContainerBackgroundProcessor[StandardEngine[Tomcat]]" daemon prio=5 
>> tid=0x00007fde4b928800 nid=0x7c03 waiting on condition [0x0000000196d6c000]
>>   java.lang.Thread.State: TIMED_WAITING (sleeping)
>>        at java.lang.Thread.sleep(Native Method)
>>        at 
>> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1331)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "localhost-startStop-1" daemon prio=5 tid=0x00007fde4c945800 nid=0x7a03 
>> waiting on condition [0x0000000196ac0000]
>>   java.lang.Thread.State: TIMED_WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000016500b718> (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.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
>>        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:744)
>> 
>> "Tomcat-startStop-1" daemon prio=5 tid=0x00007fde4b928000 nid=0x7803 waiting 
>> on condition [0x00000001964b1000]
>>   java.lang.Thread.State: TIMED_WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000016500b088> (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.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
>>        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:744)
>> 
>> "NioBlockingSelector.BlockPoller-1" daemon prio=5 tid=0x00007fde4b925000 
>> nid=0x7107 runnable [0x00000001963ae000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
>>        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:200)
>>        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
>>        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
>>        - locked <0x000000016500ac38> (a sun.nio.ch.Util$2)
>>        - locked <0x000000016500ac28> (a 
>> java.util.Collections$UnmodifiableSet)
>>        - locked <0x000000016500aae8> (a sun.nio.ch.KQueueSelectorImpl)
>>        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
>>        at 
>> org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:342)
>> 
>> "AsyncFileHandlerWriter-1967726688" daemon prio=5 tid=0x00007fde4d08c800 
>> nid=0x6f03 waiting on condition [0x000000019612c000]
>>   java.lang.Thread.State: TIMED_WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x00000001650300c8> (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.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:519)
>>        at 
>> java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:682)
>>        at 
>> org.apache.juli.AsyncFileHandler$LoggerThread.run(AsyncFileHandler.java:147)
>> 
>> "ReaderThread" prio=5 tid=0x00007fde4d075000 nid=0x6d03 runnable 
>> [0x0000000195ded000]
>>   java.lang.Thread.State: RUNNABLE
>>        at java.net.SocketInputStream.socketRead0(Native Method)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:152)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:122)
>>        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
>>        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
>>        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
>>        - locked <0x0000000165036230> (a java.io.InputStreamReader)
>>        at java.io.InputStreamReader.read(InputStreamReader.java:184)
>>        at java.io.BufferedReader.fill(BufferedReader.java:154)
>>        at java.io.BufferedReader.readLine(BufferedReader.java:317)
>>        - locked <0x0000000165036230> (a java.io.InputStreamReader)
>>        at java.io.BufferedReader.readLine(BufferedReader.java:382)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner$ReaderThread.run(RemoteTestRunner.java:140)
>> 
>> "Service Thread" daemon prio=5 tid=0x00007fde4e01c000 nid=0x6903 runnable 
>> [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "C2 CompilerThread1" daemon prio=5 tid=0x00007fde4c803000 nid=0x6703 waiting 
>> on condition [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "C2 CompilerThread0" daemon prio=5 tid=0x00007fde4c802800 nid=0x6503 waiting 
>> on condition [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "JDWP Command Reader" daemon prio=5 tid=0x00007fde4d811800 nid=0x6303 
>> runnable [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "JDWP Event Helper Thread" daemon prio=5 tid=0x00007fde4d810000 nid=0x6103 
>> runnable [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "JDWP Transport Listener: dt_socket" daemon prio=5 tid=0x00007fde4d80f000 
>> nid=0x5f03 runnable [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "Signal Dispatcher" daemon prio=5 tid=0x00007fde4e016800 nid=0x5d03 waiting 
>> on condition [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "Finalizer" daemon prio=5 tid=0x00007fde4b85d000 nid=0x4a03 in Object.wait() 
>> [0x000000019520b000]
>>   java.lang.Thread.State: WAITING (on object monitor)
>>        at java.lang.Object.wait(Native Method)
>>        - waiting on <0x00000001650110f8> (a 
>> java.lang.ref.ReferenceQueue$Lock)
>>        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
>>        - locked <0x00000001650110f8> (a java.lang.ref.ReferenceQueue$Lock)
>>        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
>>        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)
>> 
>> "Reference Handler" daemon prio=5 tid=0x00007fde4b85a000 nid=0x4803 in 
>> Object.wait() [0x0000000195108000]
>>   java.lang.Thread.State: WAITING (on object monitor)
>>        at java.lang.Object.wait(Native Method)
>>        - waiting on <0x0000000165010ab8> (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 <0x0000000165010ab8> (a java.lang.ref.Reference$Lock)
>> 
>> "main" prio=5 tid=0x00007fde4d800800 nid=0x1903 runnable [0x000000010556a000]
>>   java.lang.Thread.State: RUNNABLE
>>        at java.net.SocketInputStream.socketRead0(Native Method)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:152)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:122)
>>        at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
>>        at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
>>        at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
>>        - locked <0x000000016501a220> (a java.io.BufferedInputStream)
>>        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
>>        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
>>        at 
>> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
>>        - locked <0x000000016501a2d0> (a 
>> sun.net.www.protocol.http.HttpURLConnection)
>>        at 
>> java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.methodUrl(TomcatBaseTest.java:247)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.getUrl(TomcatBaseTest.java:219)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.getUrl(TomcatBaseTest.java:213)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.getUrl(TomcatBaseTest.java:202)
>>        at 
>> org.apache.catalina.nonblocking.TestWriteListener.testEchoListener1(TestWriteListener.java:53)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>        at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>        at java.lang.reflect.Method.invoke(Method.java:606)
>>        at 
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>>        at 
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>        at 
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>>        at 
>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>>        at 
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>>        at 
>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>>        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>>        at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>>        at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>        at 
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>> 
>> "VM Thread" prio=5 tid=0x00007fde4b859800 nid=0x4603 runnable
>> 
>> "GC task thread#0 (ParallelGC)" prio=5 tid=0x00007fde4d80d800 nid=0x3603 
>> runnable
>> 
>> "GC task thread#1 (ParallelGC)" prio=5 tid=0x00007fde4b819800 nid=0x3803 
>> runnable
>> 
>> "GC task thread#2 (ParallelGC)" prio=5 tid=0x00007fde4b81a800 nid=0x3a03 
>> runnable
>> 
>> "GC task thread#3 (ParallelGC)" prio=5 tid=0x00007fde4b81b000 nid=0x3c03 
>> runnable
>> 
>> "GC task thread#4 (ParallelGC)" prio=5 tid=0x00007fde4b81b800 nid=0x3e03 
>> runnable
>> 
>> "GC task thread#5 (ParallelGC)" prio=5 tid=0x00007fde4b81c000 nid=0x4003 
>> runnable
>> 
>> "GC task thread#6 (ParallelGC)" prio=5 tid=0x00007fde4b81d000 nid=0x4203 
>> runnable
>> 
>> "GC task thread#7 (ParallelGC)" prio=5 tid=0x00007fde4b81d800 nid=0x4403 
>> runnable
>> 
>> "VM Periodic Task Thread" prio=5 tid=0x00007fde4e017800 nid=0x6b03 waiting 
>> on condition
>> 
>> JNI global references: 2833
>> 
>> Heap
>> PSYoungGen      total 38912K, used 9856K [0x0000000162f00000, 
>> 0x0000000167b00000, 0x000000018da00000)
>>  eden space 33792K, 14% used 
>> [0x0000000162f00000,0x00000001633c02b8,0x0000000165000000)
>>  from space 5120K, 97% used 
>> [0x0000000165000000,0x00000001654e0050,0x0000000165500000)
>>  to   space 5120K, 0% used 
>> [0x0000000167600000,0x0000000167600000,0x0000000167b00000)
>> ParOldGen       total 87040K, used 72K [0x000000010da00000, 
>> 0x0000000112f00000, 0x0000000162f00000)
>>  object space 87040K, 0% used 
>> [0x000000010da00000,0x000000010da12010,0x0000000112f00000)
>> PSPermGen       total 21504K, used 13713K [0x0000000108800000, 
>> 0x0000000109d00000, 0x000000010da00000)
>>  object space 21504K, 63% used 
>> [0x0000000108800000,0x0000000109564758,0x0000000109d00000)
>> 
>> 
>>> and once when it is in the failure state.  (one in the
>>> starting-to-fail state would be good too).
>> 
>> Here's a thread dump taken from the same execution after requests start 
>> timing out.  I used the debugger to pause during the call to the onTimeout 
>> method of my AsyncListener and then took the thread dump.
>> 
>> 2013-12-29 09:07:29
>> Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.45-b08 mixed mode):
>> 
>> "http-nio-127.0.0.1-auto-1-exec-10" daemon prio=5 tid=0x00007fde4e114800 
>> nid=0x8e03 waiting on condition [0x000000019770f000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-9" daemon prio=5 tid=0x00007fde4e113800 
>> nid=0x8c03 waiting on condition [0x000000019760c000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-8" daemon prio=5 tid=0x00007fde4d801800 
>> nid=0x8a03 waiting on condition [0x0000000197509000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-7" daemon prio=5 tid=0x00007fde4e056000 
>> nid=0x8803 waiting on condition [0x0000000197406000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-6" daemon prio=5 tid=0x00007fde4d009000 
>> nid=0x8603 waiting on condition [0x0000000196e6f000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-5" daemon prio=5 tid=0x00007fde4c945800 
>> nid=0x5817 at breakpoint[0x0000000196ac0000]
>>   java.lang.Thread.State: RUNNABLE
>>        at 
>> org.apache.catalina.nonblocking.TestWriteListener$DataStreamingServlet$1.onTimeout(TestWriteListener.java:75)
>>        at 
>> org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:45)
>>        at 
>> org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:151)
>>        at 
>> org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:306)
>>        at 
>> org.apache.coyote.http11.AbstractHttp11Processor.asyncDispatch(AbstractHttp11Processor.java:1618)
>>        at 
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
>>        at 
>> org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1576)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1534)
>>        - locked <0x000000010e06f480> (a 
>> org.apache.tomcat.util.net.NioChannel)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-4" daemon prio=5 tid=0x00007fde4b928000 
>> nid=0x5107 waiting on condition [0x00000001968fc000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-3" daemon prio=5 tid=0x00007fde4d24c000 
>> nid=0x4c07 waiting on condition [0x00000001966b7000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-2" daemon prio=5 tid=0x00007fde4e0b0000 
>> nid=0x7a07 waiting on condition [0x00000001964b1000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-exec-1" daemon prio=5 tid=0x00007fde4b888000 
>> nid=0x8403 waiting on condition [0x00000001965b4000]
>>   java.lang.Thread.State: WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010dee9e60> (a 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>>        at 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>>        at 
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
>>        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:1)
>>        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:744)
>> 
>> "http-nio-127.0.0.1-auto-1-Acceptor-0" daemon prio=5 tid=0x00007fde4f07e000 
>> nid=0x8203 runnable [0x0000000197303000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
>>        at 
>> sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241)
>>        - locked <0x000000010df20f40> (a java.lang.Object)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:693)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "http-nio-127.0.0.1-auto-1-ClientPoller-1" daemon prio=5 
>> tid=0x00007fde4b89f800 nid=0x8003 runnable [0x0000000197124000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
>>        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:200)
>>        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
>>        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
>>        - locked <0x000000010e06f800> (a sun.nio.ch.Util$2)
>>        - locked <0x000000010e06f7f0> (a 
>> java.util.Collections$UnmodifiableSet)
>>        - locked <0x000000010e06f1d0> (a sun.nio.ch.KQueueSelectorImpl)
>>        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1054)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "http-nio-127.0.0.1-auto-1-ClientPoller-0" daemon prio=5 
>> tid=0x00007fde4b89f000 nid=0x7e03 runnable [0x0000000197021000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
>>        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:200)
>>        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
>>        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
>>        - locked <0x000000010e06ed88> (a sun.nio.ch.Util$2)
>>        - locked <0x000000010e06ed78> (a 
>> java.util.Collections$UnmodifiableSet)
>>        - locked <0x000000010e06ec38> (a sun.nio.ch.KQueueSelectorImpl)
>>        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
>>        at 
>> org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1054)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "ContainerBackgroundProcessor[StandardEngine[Tomcat]]" daemon prio=5 
>> tid=0x00007fde4b928800 nid=0x7c03 waiting on condition [0x0000000196d6c000]
>>   java.lang.Thread.State: TIMED_WAITING (sleeping)
>>        at java.lang.Thread.sleep(Native Method)
>>        at 
>> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1331)
>>        at java.lang.Thread.run(Thread.java:744)
>> 
>> "NioBlockingSelector.BlockPoller-1" daemon prio=5 tid=0x00007fde4b925000 
>> nid=0x7107 runnable [0x00000001963ae000]
>>   java.lang.Thread.State: RUNNABLE
>>        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
>>        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:200)
>>        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
>>        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
>>        - locked <0x000000010df209a8> (a sun.nio.ch.Util$2)
>>        - locked <0x000000010df20998> (a 
>> java.util.Collections$UnmodifiableSet)
>>        - locked <0x000000010df20858> (a sun.nio.ch.KQueueSelectorImpl)
>>        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
>>        at 
>> org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:342)
>> 
>> "AsyncFileHandlerWriter-1967726688" daemon prio=5 tid=0x00007fde4d08c800 
>> nid=0x6f03 waiting on condition [0x000000019612c000]
>>   java.lang.Thread.State: TIMED_WAITING (parking)
>>        at sun.misc.Unsafe.park(Native Method)
>>        - parking to wait for  <0x000000010e080aa0> (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.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:519)
>>        at 
>> java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:682)
>>        at 
>> org.apache.juli.AsyncFileHandler$LoggerThread.run(AsyncFileHandler.java:147)
>> 
>> "ReaderThread" prio=5 tid=0x00007fde4d075000 nid=0x6d03 runnable 
>> [0x0000000195ded000]
>>   java.lang.Thread.State: RUNNABLE
>>        at java.net.SocketInputStream.socketRead0(Native Method)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:152)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:122)
>>        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
>>        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
>>        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
>>        - locked <0x000000010e0b00b8> (a java.io.InputStreamReader)
>>        at java.io.InputStreamReader.read(InputStreamReader.java:184)
>>        at java.io.BufferedReader.fill(BufferedReader.java:154)
>>        at java.io.BufferedReader.readLine(BufferedReader.java:317)
>>        - locked <0x000000010e0b00b8> (a java.io.InputStreamReader)
>>        at java.io.BufferedReader.readLine(BufferedReader.java:382)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner$ReaderThread.run(RemoteTestRunner.java:140)
>> 
>> "Service Thread" daemon prio=5 tid=0x00007fde4e01c000 nid=0x6903 runnable 
>> [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "C2 CompilerThread1" daemon prio=5 tid=0x00007fde4c803000 nid=0x6703 waiting 
>> on condition [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "C2 CompilerThread0" daemon prio=5 tid=0x00007fde4c802800 nid=0x6503 waiting 
>> on condition [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "JDWP Command Reader" daemon prio=5 tid=0x00007fde4d811800 nid=0x6303 
>> runnable [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "JDWP Event Helper Thread" daemon prio=5 tid=0x00007fde4d810000 nid=0x6103 
>> runnable [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "JDWP Transport Listener: dt_socket" daemon prio=5 tid=0x00007fde4d80f000 
>> nid=0x5f03 runnable [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "Signal Dispatcher" daemon prio=5 tid=0x00007fde4e016800 nid=0x5d03 waiting 
>> on condition [0x0000000000000000]
>>   java.lang.Thread.State: RUNNABLE
>> 
>> "Finalizer" daemon prio=5 tid=0x00007fde4b85d000 nid=0x4a03 in Object.wait() 
>> [0x000000019520b000]
>>   java.lang.Thread.State: WAITING (on object monitor)
>>        at java.lang.Object.wait(Native Method)
>>        - waiting on <0x000000010e02ba78> (a 
>> java.lang.ref.ReferenceQueue$Lock)
>>        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
>>        - locked <0x000000010e02ba78> (a java.lang.ref.ReferenceQueue$Lock)
>>        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
>>        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)
>> 
>> "Reference Handler" daemon prio=5 tid=0x00007fde4b85a000 nid=0x4803 in 
>> Object.wait() [0x0000000195108000]
>>   java.lang.Thread.State: WAITING (on object monitor)
>>        at java.lang.Object.wait(Native Method)
>>        - waiting on <0x000000010e02b620> (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 <0x000000010e02b620> (a java.lang.ref.Reference$Lock)
>> 
>> "main" prio=5 tid=0x00007fde4d800800 nid=0x1903 runnable [0x000000010556a000]
>>   java.lang.Thread.State: RUNNABLE
>>        at java.net.SocketInputStream.socketRead0(Native Method)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:152)
>>        at java.net.SocketInputStream.read(SocketInputStream.java:122)
>>        at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
>>        at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
>>        at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
>>        - locked <0x000000016b36f6f0> (a java.io.BufferedInputStream)
>>        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
>>        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
>>        at 
>> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
>>        - locked <0x000000016b36d738> (a 
>> sun.net.www.protocol.http.HttpURLConnection)
>>        at 
>> java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.methodUrl(TomcatBaseTest.java:247)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.getUrl(TomcatBaseTest.java:219)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.getUrl(TomcatBaseTest.java:213)
>>        at 
>> org.apache.catalina.startup.TomcatBaseTest.getUrl(TomcatBaseTest.java:202)
>>        at 
>> org.apache.catalina.nonblocking.TestWriteListener.testEchoListener1(TestWriteListener.java:53)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>        at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>        at java.lang.reflect.Method.invoke(Method.java:606)
>>        at 
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>>        at 
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>        at 
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>>        at 
>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>>        at 
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>>        at 
>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>>        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>>        at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>>        at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>        at 
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>        at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>> 
>> "VM Thread" prio=5 tid=0x00007fde4b859800 nid=0x4603 runnable
>> 
>> "GC task thread#0 (ParallelGC)" prio=5 tid=0x00007fde4d80d800 nid=0x3603 
>> runnable
>> 
>> "GC task thread#1 (ParallelGC)" prio=5 tid=0x00007fde4b819800 nid=0x3803 
>> runnable
>> 
>> "GC task thread#2 (ParallelGC)" prio=5 tid=0x00007fde4b81a800 nid=0x3a03 
>> runnable
>> 
>> "GC task thread#3 (ParallelGC)" prio=5 tid=0x00007fde4b81b000 nid=0x3c03 
>> runnable
>> 
>> "GC task thread#4 (ParallelGC)" prio=5 tid=0x00007fde4b81b800 nid=0x3e03 
>> runnable
>> 
>> "GC task thread#5 (ParallelGC)" prio=5 tid=0x00007fde4b81c000 nid=0x4003 
>> runnable
>> 
>> "GC task thread#6 (ParallelGC)" prio=5 tid=0x00007fde4b81d000 nid=0x4203 
>> runnable
>> 
>> "GC task thread#7 (ParallelGC)" prio=5 tid=0x00007fde4b81d800 nid=0x4403 
>> runnable
>> 
>> "VM Periodic Task Thread" prio=5 tid=0x00007fde4e017800 nid=0x6b03 waiting 
>> on condition
>> 
>> JNI global references: 2829
>> 
>> Heap
>> PSYoungGen      total 440832K, used 151268K [0x0000000162f00000, 
>> 0x000000018da00000, 0x000000018da00000)
>>  eden space 432128K, 34% used 
>> [0x0000000162f00000,0x000000016c01ecf8,0x000000017d500000)
>>  from space 8704K, 30% used 
>> [0x000000017d500000,0x000000017d79a3b8,0x000000017dd80000)
>>  to   space 8704K, 0% used 
>> [0x000000018d180000,0x000000018d180000,0x000000018da00000)
>> ParOldGen       total 87040K, used 8243K [0x000000010da00000, 
>> 0x0000000112f00000, 0x0000000162f00000)
>>  object space 87040K, 9% used 
>> [0x000000010da00000,0x000000010e20cc28,0x0000000112f00000)
>> PSPermGen       total 21504K, used 13906K [0x0000000108800000, 
>> 0x0000000109d00000, 0x000000010da00000)
>>  object space 21504K, 64% used 
>> [0x0000000108800000,0x0000000109594ad8,0x0000000109d00000)
>> 
>> 
>> Thanks for the help!
>> 
>> Dan
>> 
>> 
>>> 
>>> cheers,
>>> David.
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to