[Yanel-dev] Better handling when the user aborts the connection.

Alec Bickerton alec.bickerton at wyona.com
Wed Dec 3 15:48:45 CET 2008


Hi,

Can I suggest that the yanel servlet is changed so that it does not
needlessly polute the log file every time a use aborts the request.

All this needs is a quick one line log message giving the sessionID and
stating that the user gave up waiting.

I'm on suggesting we catch the ClientAbortException and log the event,
as we're still interested in other SocketExceptions.

Alec,

Stacktrace:

2008-12-03 15:35:16,572 YanelServlet.generateResponse()  -
ClientAbortException:  java.net.SocketException: Broken pipe
ClientAbortException:  java.net.SocketException: Broken pipe
	at
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:324)
	at
org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
	at
org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
	at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
	at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:395)
	at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:136)
	at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:146)
	at java.io.OutputStreamWriter.write(OutputStreamWriter.java:204)
	at
org.wyona.yanel.servlet.YanelServlet.mergeToolbarWithContent(YanelServlet.java:1745)
	at
org.wyona.yanel.servlet.YanelServlet.generateResponse(YanelServlet.java:2056)
	at org.wyona.yanel.servlet.YanelServlet.getContent(YanelServlet.java:640)
	at org.wyona.yanel.servlet.YanelServlet.doGet(YanelServlet.java:276)
	at org.wyona.yanel.servlet.YanelServlet.service(YanelServlet.java:227)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.wyona.yanel.servlet.communication.YanelFilter.doFilter(YanelFilter.java:41)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at
org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:746)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
	at
org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:769)
	at
org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:125)
	at
org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:579)
	at org.apache.coyote.Response.doWrite(Response.java:559)
	at
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
	... 32 more
2008-12-03 15:35:16,626 AbstractSerializer.endDocument()  -
ClientAbortException:  java.net.SocketException: Broken pipe
	at
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
	at
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:314)
	at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)
	at
org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:97)
	at
org.wyona.yanel.core.serialization.AbstractSerializer.endDocument(AbstractSerializer.java:31)
	at
org.wyona.yanel.core.transformation.AbstractTransformer.endDocument(AbstractTransformer.java:35)
	at
org.apache.xml.serializer.ToXMLSAXHandler.endDocument(ToXMLSAXHandler.java:181)
	at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1378)
	at
org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3458)
	at
org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:406)
	at
org.apache.xalan.transformer.TransformerIdentityImpl.endDocument(TransformerIdentityImpl.java:962)
	at org.apache.xml.serializer.TreeWalker.traverse(TreeWalker.java:174)
	at
org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:389)
	at
org.wyona.yanel.servlet.YanelServlet.setYanelOutput(YanelServlet.java:1489)
	at
org.wyona.yanel.servlet.YanelServlet.generateResponse(YanelServlet.java:2063)
	at org.wyona.yanel.servlet.YanelServlet.getContent(YanelServlet.java:640)
	at org.wyona.yanel.servlet.YanelServlet.doGet(YanelServlet.java:276)
	at org.wyona.yanel.servlet.YanelServlet.service(YanelServlet.java:227)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.wyona.yanel.servlet.communication.YanelFilter.doFilter(YanelFilter.java:41)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at
org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:746)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
	at
org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:769)
	at
org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:123)
	at
org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:579)
	at org.apache.coyote.Response.doWrite(Response.java:559)
	at
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
	... 36 more
(Location of error unknown)ClientAbortException:
java.net.SocketException: Broken pipe


More information about the Yanel-development mailing list