Note that there are some explanatory texts on larger screens.

plurals
  1. POTomcat - one call two requests
    primarykey
    data
    text
    <p>I've got strange issue on my app I executed one call to server. localhost_access_log.txt</p> <pre><code>10.8.32.5 - - [26/Feb/2013:16:14:21 +0000] GET /myapp/getfile?file=filename.apk HTTP/1.0 200 404648 578 </code></pre> <p>but on servlet I received two calls with delay in 302 ms and in different threads. MyApp.log</p> <pre><code> 2013-02-26 16:16:54,751 DEBUG [MyServlet.java:59] - Download file: filename.apk - [http-bio-8080-exec-1] 2013-02-26 16:16:54,876 DEBUG [MyServlet.java:117] - Error writing file to output stream. Filename was filename.apk - [http-bio-8080-exec-1] 2013-02-26 16:16:55,188 DEBUG [MyServlet.java:59] - Download file: filename.apk - [http-bio-8080-exec-10] 2013-02-26 16:16:55,642 DEBUG [MyServlet.java:138] - Call was completed. Result: OK - [Thread-8] </code></pre> <p>Actually as you see first call failed and in such case i return error code 400</p> <pre><code> catch (IOException ex) { log.debug("Error writing file to output stream. Filename was {}", fileName); handleError(ex, response); } private void handleError(Exception ex, HttpServletResponse response) { StringBuilder errorMessage = new StringBuilder("You cannot obtain file due to error. "); errorMessage.append(ex.toString()); try { response.sendError(400, errorMessage.toString()); } catch (IOException e) { log.error("App cannot write response!"); log.debug("Error: ", e); } </code></pre> <p>}</p> <p>I added new logs and checked calls with wireshark</p> <p>2013-03-04 11:00:06,344 DEBUG [MyServlet.java:59] - Download file: filename.apk - [http-bio-8080-exec-69] 2013-03-04 11:00:06,516 DEBUG [MyServlet.java:112] - Error writing file to output stream. Filename was hotvideos-rm-rp1.apk - [http-bio-8080-exec-69] 2013-03-04 11:00:06,516 DEBUG [MyServlet.java:146] - You cannot obtain file due to error. ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error - [http-bio-8080-exec-69] 2013-03-04 11:00:06,641 DEBUG [MyServlet.java:147] - Stacktrace: - [http-bio-8080-exec-69] org.apache.catalina.connector.ClientAbortException: null at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:388) ~[catalina.jar:7.0.35] at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:462) ~[tomcat-coyote.jar:7.0.35] at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) ~[tomcat-coyote.jar:7.0.35] at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:413) ~[catalina.jar:7.0.35] at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:401) ~[catalina.jar:7.0.35] at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91) ~[catalina.jar:7.0.35] at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1384) ~[commons-io-2.1.jar:2.1] at org.apache.commons.io.IOUtils.copy(IOUtils.java:1357) ~[commons-io-2.1.jar:2.1] at MyServlet.downloadFile(MyServlet.java:52) [MyServlet.class:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_13] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_13] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_13] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_13] at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) [spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) [spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) [servlet-api.jar:na] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801) [spring-webmvc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) [servlet-api.jar:na] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) [catalina.jar:7.0.35] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.35] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) [catalina.jar:7.0.35] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) [catalina.jar:7.0.35] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [catalina.jar:7.0.35] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) [catalina.jar:7.0.35] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) [catalina.jar:7.0.35] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) [catalina.jar:7.0.35] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) [catalina.jar:7.0.35] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) [catalina.jar:7.0.35] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) [tomcat-coyote.jar:7.0.35] at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) [tomcat-coyote.jar:7.0.35] at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) [tomcat-coyote.jar:7.0.35] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_13] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_13] at java.lang.Thread.run(Unknown Source) [na:1.7.0_13] Caused by: java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.7.0_13] at java.net.SocketOutputStream.socketWrite(Unknown Source) ~[na:1.7.0_13] at java.net.SocketOutputStream.write(Unknown Source) ~[na:1.7.0_13] at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215) ~[tomcat-coyote.jar:7.0.35] at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:462) ~[tomcat-coyote.jar:7.0.35] at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) ~[tomcat-coyote.jar:7.0.35] at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240) ~[tomcat-coyote.jar:7.0.35] at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:93) ~[tomcat-coyote.jar:7.0.35] at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192) ~[tomcat-coyote.jar:7.0.35] at org.apache.coyote.Response.doWrite(Response.java:505) ~[tomcat-coyote.jar:7.0.35] at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:383) ~[catalina.jar:7.0.35] ... 43 common frames omitted 2013-03-04 11:00:07,094 DEBUG [MyServlet.java:59] - Download file: filename.apk - [http-bio-8080-exec-79] 2013-03-04 11:00:07,485 DEBUG [MyServlet.java:133] - Call was completed. Result: OK - [Thread-6]</p> <p>And with wireshark we see two hits but on localhost-acces log we still see only one call</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload