I have managed to grab a thread dump as the issue occurs:
restlet-24193...@4593 daemon, priority=5, in group 'main', status: 'RUNNING'
at java.net.SocketInputStream.socketRead0(SocketInputStream.java:-1)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
at
org.restlet.engine.http.connector.ServerConnection.readMessage(ServerConnection.java:161)
at
org.restlet.engine.http.connector.Connection.readMessages(Connection.java:682)
at
org.restlet.engine.http.connector.Controller$2.run(Controller.java:95)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
restlet-27981...@4586 daemon, priority=5, in group 'main', status: 'RUNNING'
at org.restlet.engine.log.LogFilter.afterHandle(LogFilter.java:112)
at org.restlet.routing.Filter.handle(Filter.java:205)
at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
at org.restlet.Component.handle(Component.java:390)
at org.restlet.Server.handle(Server.java:474)
at
org.restlet.engine.http.connector.BaseServerHelper.handle(BaseServerHelper.java:158)
at
org.restlet.engine.http.connector.BaseServerHelper.handleInbound(BaseServerHelper.java:167)
at
org.restlet.engine.http.connector.BaseHelper.handleNextInbound(BaseHelper.java:418)
at
org.restlet.engine.http.connector.Connection.readMessages(Connection.java:705)
at
org.restlet.engine.http.connector.Controller$2.run(Controller.java:95)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
restlet-21985...@2258 daemon, priority=5, in group 'main', status: 'WAIT'
at sun.misc.Unsafe.park(Unsafe.java:-1)
at
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:146)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireNanos(AbstractQueuedSynchronizer.java:807)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(AbstractQueuedSynchronizer.java:1,122)
at
java.util.concurrent.SynchronousQueue$Node.waitForPut(SynchronousQueue.java:291)
at
java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:443)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:475)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
at java.lang.Thread.run(Thread.java:595)
restlet-11595...@2186, priority=5, in group 'main', status: 'RUNNING'
at java.net.PlainSocketImpl.socketAccept(PlainSocketImpl.java:-1)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.restlet.engine.http.connector.Acceptor.run(Acceptor.java:91)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
restlet-6588...@2256 daemon, priority=5, in group 'main', status: 'RUNNING'
at java.lang.Thread.sleep(Thread.java:-1)
at
org.restlet.engine.http.connector.Controller.run(Controller.java:250)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
I've highlight what I think may be the issue, and it's the fact that two
threads are operating on the same Connection object and therefore Socket.
Does this make any sense? Do the above help at all?
Would be good to get some help with this as we're beginning to use Restlet
more and more
Richard
--
View this message in context:
http://restlet-discuss.1400322.n2.nabble.com/Strange-failure-tp5371669p5415474.html
Sent from the Restlet Discuss mailing list archive at Nabble.com.
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2645961