Bug 12810 - socket write error clicking between pages to fast
Summary: socket write error clicking between pages to fast
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 4
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 4.0.6 Final
Hardware: PC All
: P3 major with 1 vote (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords: JDK1.4
Depends on:
Blocks:
 
Reported: 2002-09-19 11:57 UTC by John Trollinger
Modified: 2005-03-20 17:06 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Trollinger 2002-09-19 11:57:25 UTC
I get the following error when clicking between jsp pages before they load..  
should I be getting these messages or is there a way to supress them.  It does 
not seem right the clicking between pages before they fully load that I get 
these exceptions..

org.apache.jasper.JasperException: Connection reset by peer: socket write error
	at org.apache.jasper.servlet.JspServletWrapper.service
(JspServletWrapper.java:246)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile
(JspServlet.java:289)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationDispatcher.invoke
(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.doForward
(ApplicationDispatcher.java:432)
	at org.apache.catalina.core.ApplicationDispatcher.forward
(ApplicationDispatcher.java:356)
	at com.controlj.green.web.servlets.NavigationMapperServlet.doGet
(NavigationMapperServlet.java:154)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:260)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:191)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:471)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2397)
	at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:180)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:171)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.valves.AccessLogValve.invoke
(AccessLogValve.java:469)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service
(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:405)
	at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnectio
n(Http11Protocol.java:380)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:508)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:533)
	at java.lang.Thread.run(Thread.java:536)
----- Root Cause -----
java.net.SocketException: Connection reset by peer: socket write error
	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$OutputStreamOutputBuffer.doWrite
(InternalOutputBuffer.java:652)
	at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite
(ChunkedOutputFilter.java:166)
	at org.apache.coyote.http11.InternalOutputBuffer.doWrite
(InternalOutputBuffer.java:523)
	at org.apache.coyote.Response.doWrite(Response.java:508)
	at org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes
(OutputBuffer.java:380)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:360)
	at org.apache.coyote.tomcat4.OutputBuffer.flush(OutputBuffer.java:341)
	at org.apache.coyote.tomcat4.CoyoteResponse.flushBuffer
(CoyoteResponse.java:553)
	at org.apache.coyote.tomcat4.CoyoteResponseFacade.flushBuffer
(CoyoteResponseFacade.java:227)
	at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:211)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include
(JspRuntimeLibrary.java:808)
	at org.apache.jasper.runtime.PageContextImpl.include
(PageContextImpl.java:395)
	at org.apache.jasper.runtime.PageContextImpl.handlePageException
(PageContextImpl.java:480)
	at org.apache.jsp.testall_mb_med_lstat_air_points_jsp._jspService
(testall_mb_med_lstat_air_points_jsp.java:1312)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.jasper.servlet.JspServletWrapper.service
(JspServletWrapper.java:202)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile
(JspServlet.java:289)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationDispatcher.invoke
(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.doForward
(ApplicationDispatcher.java:432)
	at org.apache.catalina.core.ApplicationDispatcher.forward
(ApplicationDispatcher.java:356)
	at com.controlj.green.web.servlets.NavigationMapperServlet.doGet
(NavigationMapperServlet.java:154)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:260)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:191)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:471)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2397)
	at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:180)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:171)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.valves.AccessLogValve.invoke
(AccessLogValve.java:469)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
	at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service
(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:405)
	at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnectio
n(Http11Protocol.java:380)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:508)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:533)
	at java.lang.Thread.run(Thread.java:536)
Comment 1 Remy Maucherat 2002-09-19 12:07:01 UTC
Client disconnects are aparetly output. Ignore them.
Comment 2 John Trollinger 2002-09-19 13:50:40 UTC
If someone can give me a starting point (as I am knee deep in the code now and 
have had no luck finding where this is getting handled) I will try and fix it, 
but I have had no luck yet.. ( I have been looking in the
org.apache.coyote.http11.Http11Processor.process() and
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnectio
n() methods..
Comment 3 Mike Simpson 2002-10-01 21:57:56 UTC
This happens for all IE clients requesting non text/html resources.
Comment 4 Ignacio J. Ortega 2002-10-01 22:16:37 UTC
This is not a problem, maybe an excessive logging, this happens when the user 
aborts the connection, that is exactly what the reporter by pressing refresh 
quickly..
Comment 5 Ignacio J. Ortega 2002-10-01 22:17:31 UTC
oops, pressed the wrong button..
Comment 6 Mike Simpson 2002-10-01 22:34:12 UTC
My very minimal testing with points towards IE issuing multiple get requests, 
one for the HEAD and another to GET the content if the content type isn't 
text/html.  Deploying identical files under a JBoss/Tomcat bundle shows this 
behavior with 4.12, and not with 4.0x. 
Comment 7 Mark Renouf 2003-07-25 19:20:25 UTC
What is the status of this bug? I'm hoping for a configuration setting which
would cause these exceptions to be caught and ignored. Is there anything like
that implemented as of 4.1.24 ?
Comment 8 william Bert 2003-10-02 14:18:32 UTC
When my controler (servlet) forward quickly to my view (jsp), I get the message 
below:

...
   else if (query.equals("pages/login.do")) {
              if (usrActuel != null ) {
                response.sendRedirect(response.encodeURL
("chantier/chantierListe.do"));
                return;
              }
              DoUsername collaborateurs[] = null;
              collaborateurs = BoUsername.getLogin();
              request.setAttribute("collaborateurs", collaborateurs);
              request.getRequestDispatcher("login.jsp").forward(request, 
response);
              return;
...

java.net.SocketException: Software caused connection abort: socket write error
	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.catalina.connector.ResponseBase.flushBuffer
(ResponseBase.java:674)
	at org.apache.catalina.connector.HttpResponseBase.flushBuffer
(HttpResponseBase.java:764)
	at org.apache.catalina.connector.ResponseBase.write
(ResponseBase.java:647)
	at org.apache.catalina.connector.ResponseStream.write
(ResponseStream.java:312)
	at org.apache.catalina.connector.http.HttpResponseStream.write
(HttpResponseStream.java:189)
	at org.apache.catalina.servlets.DefaultServlet.copyRange
(DefaultServlet.java:1921)
	at org.apache.catalina.servlets.DefaultServlet.copy
(DefaultServlet.java:1670)
	at org.apache.catalina.servlets.DefaultServlet.serveResource
(DefaultServlet.java:1215)
	at org.apache.catalina.servlets.DefaultServlet.doGet
(DefaultServlet.java:525)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:243)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:190)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.valves.CertificatesValve.invoke
(CertificatesValve.java:246)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2347)
	at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.connector.http.HttpProcessor.process
(HttpProcessor.java:1027)
	at org.apache.catalina.connector.http.HttpProcessor.run
(HttpProcessor.java:1125)
	at java.lang.Thread.run(Thread.java:536)
Comment 9 Tim Funk 2003-11-21 19:55:05 UTC
IIRC, client abort requests (which pertains the original bug report) are not
logged by tomcat anymore. [But if a JSPor servlet chooses to catch and log that
exception, the error messages will still appear). I don't know when the fix was
made.
Comment 10 Glenn Nielsen 2003-11-24 16:49:28 UTC
I fixed this a month ago.  Here is the commit message for j-t-c.

glenn       2003/10/22 06:46:28

  Modified:    util/java/org/apache/tomcat/util/net PoolTcpEndpoint.java
  Log:
  SocketExceptions can occur in a networked app.
  No need to log a stack trace, just log the remote host
  name/ip and the exception message. Then there is less
  cruft in the logs.