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/04/21 15:35:39 UTC

Re: Silencing broken pipe I/O exceptions

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


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