You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Claude Brisson <cl...@renegat.net.INVALID> on 2018/03/22 14:51:13 UTC
Silencing broken pipe I/O exceptions
Hi all.
I have set up a server-side events mechanism using tomcat (and
https://github.com/byjg/jquery-sse), and everything is working smoothly.
But each time the server tries to send some data on an SSE channel which
has just been closed on the client side, even though this exception is
catched and handled in my SSE servlet, I see this exception in the
webapp log:
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:1.8.0_101]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
~[?:1.8.0_101]
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
~[?:1.8.0_101]
at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[?:1.8.0_101]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
~[?:1.8.0_101]
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
~[tomcat-coyote.jar:8.5.9]
at
org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
~[tomcat-coyote.jar:8.5.9]
at
org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
~[tomcat-coyote.jar:8.5.9]
at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1241)
~[tomcat-coyote.jar:8.5.9]
at
org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:670)
~[tomcat-coyote.jar:8.5.9]
at
org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607)
~[tomcat-coyote.jar:8.5.9]
at
org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597)
~[tomcat-coyote.jar:8.5.9]
at org.apache.coyote.ajp.AjpProcessor.flush(AjpProcessor.java:1096)
~[tomcat-coyote.jar:8.5.9]
at
org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:279)
[tomcat-coyote.jar:8.5.9]
at org.apache.coyote.Response.action(Response.java:168)
[tomcat-coyote.jar:8.5.9]
at
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:317)
[catalina.jar:8.5.9]
at
org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284)
[catalina.jar:8.5.9]
at
org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
[catalina.jar:8.5.9]
at
info.macias.sse.servlet3.ServletEventTarget.send(ServletEventTarget.java:121)
[jeasse-servlet3-0.11.1.jar:?]
at
info.macias.sse.servlet3.ServletEventTarget.send(ServletEventTarget.java:35)
[jeasse-servlet3-0.11.1.jar:?]
at
info.macias.sse.EventBroadcast.broadcast(EventBroadcast.java:165)
[jeasse-common-0.11.1.jar:?]
[...]
With a lot of users this can really pollute the logs. Is there any way
to silence this stacktrace?
I'm using Java 1.8.0_101 on linux 64 bits, and Tomcat 8.5.9.
Thanks,
Claude
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: Silencing broken pipe I/O exceptions
Posted by Mark Thomas <ma...@apache.org>.
On 21/04/18 16:35, Claude Brisson wrote:
> This log emanates from org.apache.coyote.AbstractProcessor.setErrorState().
>
> It's very verbose using SSE, and probably not very useful in the general
> case, 99% of the time it just means that the connection was closed on
> the client side.
>
> Is there any serious reason for this error to log something on [info] ?
http://svn.apache.org/repos/asf/tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml
Search for "61886"
Full background:
https://bz.apache.org/bugzilla/show_bug.cgi?id=61886
Mark
>
> Claude
>
>
> On 22/03/2018 15:51, Claude Brisson wrote:
>> Hi all.
>>
>> I have set up a server-side events mechanism using tomcat (and
>> https://github.com/byjg/jquery-sse), and everything is working smoothly.
>>
>> But each time the server tries to send some data on an SSE channel
>> which has just been closed on the client side, even though this
>> exception is catched and handled in my SSE servlet, I see this
>> exception in the webapp log:
>>
>> java.io.IOException: Broken pipe
>> at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:1.8.0_101]
>> at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
>> ~[?:1.8.0_101]
>> at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
>> ~[?:1.8.0_101]
>> at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[?:1.8.0_101]
>> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
>> ~[?:1.8.0_101]
>> at
>> org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1241)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:670)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.coyote.ajp.AjpProcessor.flush(AjpProcessor.java:1096)
>> ~[tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:279)
>> [tomcat-coyote.jar:8.5.9]
>> at org.apache.coyote.Response.action(Response.java:168)
>> [tomcat-coyote.jar:8.5.9]
>> at
>> org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:317)
>> [catalina.jar:8.5.9]
>> at
>> org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284) [catalina.jar:8.5.9]
>>
>> at
>> org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
>> [catalina.jar:8.5.9]
>> at
>> info.macias.sse.servlet3.ServletEventTarget.send(ServletEventTarget.java:121)
>> [jeasse-servlet3-0.11.1.jar:?]
>> at
>> info.macias.sse.servlet3.ServletEventTarget.send(ServletEventTarget.java:35)
>> [jeasse-servlet3-0.11.1.jar:?]
>> at
>> info.macias.sse.EventBroadcast.broadcast(EventBroadcast.java:165)
>> [jeasse-common-0.11.1.jar:?]
>> [...]
>>
>> With a lot of users this can really pollute the logs. Is there any way
>> to silence this stacktrace?
>>
>> I'm using Java 1.8.0_101 on linux 64 bits, and Tomcat 8.5.9.
>>
>> Thanks,
>>
>> Claude
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: Silencing broken pipe I/O exceptions
Posted by Claude Brisson <cl...@renegat.net.INVALID>.
This log emanates from org.apache.coyote.AbstractProcessor.setErrorState().
It's very verbose using SSE, and probably not very useful in the general
case, 99% of the time it just means that the connection was closed on
the client side.
Is there any serious reason for this error to log something on [info] ?
Claude
On 22/03/2018 15:51, Claude Brisson wrote:
> Hi all.
>
> I have set up a server-side events mechanism using tomcat (and
> https://github.com/byjg/jquery-sse), and everything is working smoothly.
>
> But each time the server tries to send some data on an SSE channel
> which has just been closed on the client side, even though this
> exception is catched and handled in my SSE servlet, I see this
> exception in the webapp log:
>
> java.io.IOException: Broken pipe
> at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:1.8.0_101]
> at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
> ~[?:1.8.0_101]
> at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
> ~[?:1.8.0_101]
> at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[?:1.8.0_101]
> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
> ~[?:1.8.0_101]
> at
> org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1241)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:670)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.coyote.ajp.AjpProcessor.flush(AjpProcessor.java:1096)
> ~[tomcat-coyote.jar:8.5.9]
> at
> org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:279)
> [tomcat-coyote.jar:8.5.9]
> at org.apache.coyote.Response.action(Response.java:168)
> [tomcat-coyote.jar:8.5.9]
> at
> org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:317)
> [catalina.jar:8.5.9]
> at
> org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284)
> [catalina.jar:8.5.9]
> at
> org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
> [catalina.jar:8.5.9]
> at
> info.macias.sse.servlet3.ServletEventTarget.send(ServletEventTarget.java:121)
> [jeasse-servlet3-0.11.1.jar:?]
> at
> info.macias.sse.servlet3.ServletEventTarget.send(ServletEventTarget.java:35)
> [jeasse-servlet3-0.11.1.jar:?]
> at
> info.macias.sse.EventBroadcast.broadcast(EventBroadcast.java:165)
> [jeasse-common-0.11.1.jar:?]
> [...]
>
> With a lot of users this can really pollute the logs. Is there any way
> to silence this stacktrace?
>
> I'm using Java 1.8.0_101 on linux 64 bits, and Tomcat 8.5.9.
>
> Thanks,
>
> Claude
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org