Skip to content

Use DEBUG log level for broken WebSocket client connections or write failures [SPR-12155] #16769

@spring-projects-issues

Description

@spring-projects-issues

Rob Winch opened SPR-12155 and commented

At times LoggingWebSocketHandlerDecorator logs "IOException: Broken pipe at ERROR" inappropriately.

This can happen in the following scenario:

  • A webpage creates a WebSocket connection
  • The user refreshes the page which immediately terminates the WebSocket connection

Note that this is an intermitted issue and does not happen all of the time. Since this is a normal workflow, Spring should not log this at ERROR level.

A full stacktrace can be found below:

2014-09-04 10:55:14.809 ERROR 55031 --- [nio-8080-exec-1] s.w.s.h.LoggingWebSocketHandlerDecorator : Transport error in WebSocketServerSockJsSession[id=jhf9zdei]



java.io.IOException: java.util.concurrent.ExecutionException: java.io.IOException: Broken pipe

at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:243)

at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:487)

at org.apache.tomcat.websocket.WsSession.onClose(WsSession.java:441)

at org.apache.tomcat.websocket.WsFrameBase.processDataControl(WsFrameBase.java:324)

at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:270)

at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:116)

at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:54)

at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:194)

at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:189)

at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:92)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:605)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1720)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)

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:744)

Caused by: java.util.concurrent.ExecutionException: java.io.IOException: Broken pipe

at org.apache.tomcat.websocket.FutureToSendHandler.get(FutureToSendHandler.java:102)

at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:238)

... 16 common frames omitted

Caused by: java.io.IOException: Broken pipe

at sun.nio.ch.FileDispatcherImpl.write0(Native Method)

at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)

at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)

at sun.nio.ch.IOUtil.write(IOUtil.java:65)

at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466)

at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:123)

at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:185)

at org.apache.coyote.http11.upgrade.NioServletOutputStream.doWriteInternal(NioServletOutputStream.java:93)

at org.apache.coyote.http11.upgrade.NioServletOutputStream.doWrite(NioServletOutputStream.java:60)

at org.apache.coyote.http11.upgrade.AbstractServletOutputStream.writeInternal(AbstractServletOutputStream.java:125)

at org.apache.coyote.http11.upgrade.AbstractServletOutputStream.write(AbstractServletOutputStream.java:92)

at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:94)

at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:81)

at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:393)

at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:287)

at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:233)

... 16 common frames omitted

Affects: 4.1 GA

Issue Links:

Referenced from: commits 5b1cbf0

1 votes, 3 watchers

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)type: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions