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

Reply via email to