https://issues.apache.org/bugzilla/show_bug.cgi?id=57489
Bug ID: 57489
Summary: java.util.concurrent.ExecutionException:
java.io.IOException: Key must be cancelled
Product: Tomcat 8
Version: 8.0.15
Hardware: PC
OS: Linux
Status: NEW
Severity: major
Priority: P2
Component: WebSocket
Assignee: [email protected]
Reporter: [email protected]
Hello all,
we have been trying to track down the cause of some strange exceptions produced
by our application, that are related to the websocket connection somehow being
dropped.
This happens in multiple deployments of the application, but this one in
particular is on a Windows 8 Machine.
2015-01-22 15:14:09,599 CST WARN [null] - Duplicate resource
7143de60-6212-4a06-8e2b-ce266c1d9769. Could be caused by a dead connection not
detected by your server. Replacing the old one with the fresh one
2015-01-22 15:14:09,599 CST ERROR [null] - java.io.IOException:
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:276)
at
org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:536)
at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:464)
at org.apache.tomcat.websocket.WsSession.close(WsSession.java:441)
at org.apache.tomcat.websocket.WsSession.close(WsSession.java:435)
at
org.atmosphere.container.version.JSR356WebSocket.close(JSR356WebSocket.java:142)
at org.atmosphere.websocket.WebSocket.close(WebSocket.java:273)
at
org.atmosphere.cpr.AtmosphereResponse.close(AtmosphereResponse.java:848)
at
org.atmosphere.cpr.AtmosphereResourceImpl.cancel(AtmosphereResourceImpl.java:779)
at
org.atmosphere.cpr.AtmosphereResourceImpl.close(AtmosphereResourceImpl.java:855)
at
com.vaadin.server.communication.AtmospherePushConnection.disconnect(AtmospherePushConnection.java:305)
at
com.vaadin.server.communication.PushHandler.disconnect(PushHandler.java:430)
at
com.vaadin.server.communication.PushHandler.onDisconnect(PushHandler.java:330)
at
org.atmosphere.cpr.AtmosphereResourceImpl.onDisconnect(AtmosphereResourceImpl.java:715)
at
org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:618)
at
org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:598)
at
org.atmosphere.cpr.AtmosphereResourceImpl.dirtyClose(AtmosphereResourceImpl.java:864)
at
org.atmosphere.cpr.DefaultBroadcaster.addAtmosphereResource(DefaultBroadcaster.java:1370)
at
org.atmosphere.cpr.AtmosphereResourceImpl.suspend(AtmosphereResourceImpl.java:408)
at
org.atmosphere.cpr.AtmosphereResourceImpl.suspend(AtmosphereResourceImpl.java:324)
at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:131)
at
com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:253)
at
com.vaadin.server.communication.PushHandler.access$200(PushHandler.java:56)
at
com.vaadin.server.communication.PushHandler$1.onRequest(PushHandler.java:74)
at
org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:205)
at
org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:104)
at
org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:66)
at
org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2075)
at
org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:570)
at
org.atmosphere.websocket.DefaultWebSocketProcessor.open(DefaultWebSocketProcessor.java:215)
at org.atmosphere.container.JSR356Endpoint.onOpen(JSR356Endpoint.java:198)
at
org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.init(WsHttpUpgradeHandler.java:138)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: java.util.concurrent.ExecutionException: java.io.IOException: Key
must be cancelled
at
org.apache.tomcat.websocket.FutureToSendHandler.get(FutureToSendHandler.java:102)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:269)
... 39 more
Caused by: java.io.IOException: Key must be cancelled
at
org.apache.coyote.http11.upgrade.NioServletOutputStream.doWriteInternal(NioServletOutputStream.java:84)
at
org.apache.coyote.http11.upgrade.NioServletOutputStream.doWrite(NioServletOutputStream.java:61)
at
org.apache.coyote.http11.upgrade.AbstractServletOutputStream.writeInternal(AbstractServletOutputStream.java:162)
at
org.apache.coyote.http11.upgrade.AbstractServletOutputStream.write(AbstractServletOutputStream.java:129)
at
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:99)
at
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:81)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:444)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:335)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:264)
... 39 more
Caused by: java.util.concurrent.ExecutionException:
at
org.apache.tomcat.websocket.FutureToSendHandler.get(FutureToSendHandler.java:102)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:269)
at
org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:536)
at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:464)
at org.apache.tomcat.websocket.WsSession.close(WsSession.java:441)
at org.apache.tomcat.websocket.WsSession.close(WsSession.java:435)
at
org.atmosphere.container.version.JSR356WebSocket.close(JSR356WebSocket.java:142)
at org.atmosphere.websocket.WebSocket.close(WebSocket.java:273)
at
org.atmosphere.cpr.AtmosphereResponse.close(AtmosphereResponse.java:848)
at
org.atmosphere.cpr.AtmosphereResourceImpl.cancel(AtmosphereResourceImpl.java:779)
at
org.atmosphere.cpr.AtmosphereResourceImpl.close(AtmosphereResourceImpl.java:855)
at
com.vaadin.server.communication.AtmospherePushConnection.disconnect(AtmospherePushConnection.java:305)
at
com.vaadin.server.communication.PushHandler.disconnect(PushHandler.java:430)
at
com.vaadin.server.communication.PushHandler.onDisconnect(PushHandler.java:330)
at
org.atmosphere.cpr.AtmosphereResourceImpl.onDisconnect(AtmosphereResourceImpl.java:715)
at
org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:618)
at
org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:598)
at
org.atmosphere.cpr.AtmosphereResourceImpl.dirtyClose(AtmosphereResourceImpl.java:864)
at
org.atmosphere.cpr.DefaultBroadcaster.addAtmosphereResource(DefaultBroadcaster.java:1370)
at
org.atmosphere.cpr.AtmosphereResourceImpl.suspend(AtmosphereResourceImpl.java:408)
at
org.atmosphere.cpr.AtmosphereResourceImpl.suspend(AtmosphereResourceImpl.java:324)
at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:131)
at
com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:253)
at
com.vaadin.server.communication.PushHandler.access$200(PushHandler.java:56)
at
com.vaadin.server.communication.PushHandler$1.onRequest(PushHandler.java:74)
at
org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:205)
at
org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:104)
at
org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:66)
at
org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2075)
at
org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:570)
at
org.atmosphere.websocket.DefaultWebSocketProcessor.open(DefaultWebSocketProcessor.java:215)
at org.atmosphere.container.JSR356Endpoint.onOpen(JSR356Endpoint.java:198)
at
org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.init(WsHttpUpgradeHandler.java:138)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Key must be cancelled
at
org.apache.coyote.http11.upgrade.NioServletOutputStream.doWriteInternal(NioServletOutputStream.java:84)
at
org.apache.coyote.http11.upgrade.NioServletOutputStream.doWrite(NioServletOutputStream.java:61)
at
org.apache.coyote.http11.upgrade.AbstractServletOutputStream.writeInternal(AbstractServletOutputStream.java:162)
at
org.apache.coyote.http11.upgrade.AbstractServletOutputStream.write(AbstractServletOutputStream.java:129)
at
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:99)
at
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:81)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:444)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:335)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:264)
... 39 more
Java 8
NIO connector
I reported this to the Atmosphere maintainer, who responded with the following:
jfarcand
9:53 AM (6 hours ago)
Hi,
please file a bug in Tomcat, this is clearly an issue with NIO/Tomcat
implementation. It may happens less frequently with 2.2.5-SNAPSHOT, but still
the issue is with Tomcat.
Thanks
-- Jeanfrancois
On 2015-01-23 10:47 AM, Chris Boyd wrote:
Caused by: java.io.IOException: Key must be cancelled
at
org.apache.coyote.http11.upgrade.NioServletOutputStream.doWriteInternal(NioServletOutputStream.java:84)
at
org.apache.coyote.http11.upgrade.NioServletOutputStream.doWrite(NioServletOutputStream.java:61)
at
org.apache.coyote.http11.upgrade.AbstractServletOutputStream.writeInternal(AbstractServletOutputStream.java:162)
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]