Deadlock between WsRemoteEndpointImplServer.onWritePossible and Http11NioProcessor.writeEvent
Issue
- We see a deadlock between the following:
"Thread-2":
at org.apache.coyote.http11.Http11NioProcessor.writeEvent(Http11NioProcessor.java:760)
- waiting to lock <0x00000007916bfb58> (a org.apache.coyote.http11.Http11NioProcessor)
at org.apache.coyote.http11.Http11NioProcessor.action(Http11NioProcessor.java:859)
at org.apache.coyote.Response.action(Response.java:188)
at org.apache.catalina.connector.OutputBuffer.lastWrite(OutputBuffer.java:392)
at org.apache.catalina.connector.CoyoteOutputStream.isReady(CoyoteOutputStream.java:112)
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:89)
- locked <0x0000000791cd1928> (a java.lang.Object)
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:75)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:445)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:335)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$TextMessageSendHandler.write(WsRemoteEndpointImplBase.java:741)
- locked <0x0000000791cd1928> (a java.lang.Object)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPartialString(WsRemoteEndpointImplBase.java:240)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:183)
at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)
at abc.app.run(ShellWorker.java:90)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
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:745)
"http-executor-threads - 17":
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:80)
- waiting to lock <0x0000000791cd1928> (a java.lang.Object)
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsWriteListener.onWritePossible(WsHttpUpgradeHandler.java:243)
at org.apache.catalina.core.StandardWrapperValve.async(StandardWrapperValve.java:605)
at org.apache.catalina.core.StandardWrapperValve.event(StandardWrapperValve.java:350)
at org.apache.catalina.core.StandardContextValve.event(StandardContextValve.java:171)
at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.event(JBossWebContext.java:89)
at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185)
at org.apache.catalina.core.StandardHostValve.event(StandardHostValve.java:253)
at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185)
at org.apache.catalina.core.StandardEngineValve.event(StandardEngineValve.java:121)
at org.apache.catalina.connector.CoyoteAdapter.event(CoyoteAdapter.java:227)
at org.apache.coyote.http11.Http11NioProcessor.event(Http11NioProcessor.java:232)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.event(Http11NioProtocol.java:819)
- locked <0x00000007916bfb58> (a org.apache.coyote.http11.Http11NioProcessor)
at org.apache.tomcat.util.net.NioEndpoint$ChannelProcessor.run(NioEndpoint.java:940)
- locked <0x0000000791ce7b78> (a java.lang.Object)
at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:808)
at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:849)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Environment
- JBoss Enterprise Application Platform (EAP)
- 6.4.11 - 6.4.14
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.