https://bz.apache.org/bugzilla/show_bug.cgi?id=57489
Barry Coughlan <b.coughl...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|FIXED |--- Status|RESOLVED |REOPENED --- Comment #14 from Barry Coughlan <b.coughl...@gmail.com> --- I can reproduce this on 8.0.29. I will create a proper test case that doesn't need breakpoints during the week. Reproduced with the following: @OnMessage public void onMessage(Session session, ModelObject msg) { try { session.getBasicRemote().sendText("Test"); // <-- Breakpoint here } catch (IOException e) { e.printStackTrace(); } } 1. Open websocket connection to the server 2. Send message from client to server, hits the breakpoint 3. Close the connection 4. Continue from the @OnMessage breakpoint The following happens: - Step 4 throws an exception as expected (java.io.IOException: An established connection was aborted by the software in your host machine) (we catch and log this exception) - @OnError is called with a java.nio.channels.ClosedChannelException: java.nio.channels.ClosedChannelException at sun.nio.ch.SocketChannelImpl.ensureReadOpen(SocketChannelImpl.java:256) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:299) at org.apache.tomcat.util.net.NioChannel.read(NioChannel.java:137) at org.apache.coyote.http11.upgrade.NioServletInputStream.fillReadBuffer(NioServletInputStream.java:136) at org.apache.coyote.http11.upgrade.NioServletInputStream.doIsReady(NioServletInputStream.java:49) at org.apache.coyote.http11.upgrade.AbstractServletInputStream.isReady(AbstractServletInputStream.java:66) at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:49) at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:183) at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:198) at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:96) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:669) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) - Further attempts to send data on this session results in the "Key must be cancelled" exception: java.io.IOException: java.util.concurrent.ExecutionException: java.io.IOException: Key must be cancelled at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:282) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPing(WsRemoteEndpointImplBase.java:174) at org.apache.tomcat.websocket.WsRemoteEndpointBase.sendPing(WsRemoteEndpointBase.java:55) at com.myapp.WsOutbound.sendPing(WsOutbound.java:295) ..... The @OnClose method is never called. -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org