A deadlock is possible in
http-/0.0.0.0:8080-1":
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:93)
- waiting to lock <0x00000006dee6a1a8> (a java.nio.HeapByteBuffer)
- locked <0x00000006dee6a200> (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.apache.catalina.valves.ValveBase.event(ValveBase.java:185)
at org.apache.catalina.core.StandardHostValve.event(StandardHostValve.java:252)
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:228)
at org.apache.coyote.http11.Http11NioProcessor.event(Http11NioProcessor.java:232)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.event(Http11NioProtocol.java:818)
at org.apache.tomcat.util.net.NioEndpoint$ChannelProcessor.run(NioEndpoint.java:939)
- locked <0x00000006deeeb9c0> (a java.lang.Object)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.net.NioEndpoint$DefaultThreadFactory$1$1.run(NioEndpoint.java:1249)
at java.lang.Thread.run(Thread.java:745)
"EJB default - 1":
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:81)
- waiting to lock <0x00000006dee6a200> (a java.lang.Object)
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:76)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:444)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:334)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$TextMessageSendHandler.write(WsRemoteEndpointImplBase.java:741)
- locked <0x00000006dee6a1a8> (a java.nio.HeapByteBuffer)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPartialString(WsRemoteEndpointImplBase.java:239)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:182)
at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)
Verified on EAP 6.4.7.CP.CR2
We don't have reproducer for this deadlock, but customer confirmed that patch fixed their reproducer. The patch is included and no regression was found, marking as verified. More information in bz1299058.