You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is a strange case happens when a client requests a long download and then abandons the request. For instance, the download is taking 30 seconds, but the user closes the browser tab in the middle of the request. In case like that, ActiveWeb is catching this exception, and thinking that there is "something" wrong, is trying to render an error page. However, there is no browser to render it on, and it spirals with one exception after the other. Basically, this case was never considered :(.
The exceptions below are printed from a single request as a reaction to a browser abandoning it.
The goal of this task is to:
Not treat this as a crisis
Not print any exceptions
Not log anything at the ERROR level
Print something indicating that the client abandoned the request and just moved on. (at the INFO level)
"license_id":"XXXXXX"
"request_id":"30ca0b5a-e180-49c2-ae40-7c725179a143"
"session_id":"B020E356B822F6A491F0620868EF1A3D","user_id":"3793"}
"level":"INFO"
"logger":"org.javalite.activeweb.RequestDispatcher
"action":"searchDelinquency"
"controller":"app.controllers.rest.wholesaler.DelinquentController
duration_millis":210,
"error":"org.javalite.activeweb.WebException: Cannot return Writer because OutputStream was already served.; Cannot return Writer because OutputStream was already served."
"status":200
"url":"http://nyslapricepostings.com/rest/wholesaler/delinquent/searchDelinquency.txt"
level:"ERROR",
logger:"org.javalite.activeweb.RequestDispatcher",
message:"org.javalite.activeweb.WebException: Cannot return Writer because OutputStream was already served.; Cannot return Writer because OutputStream was already served.",
stacktrace:"org.javalite.activeweb.ControllerException: org.javalite.activeweb.WebException: Cannot return Writer because OutputStream was already served.; Cannot return Writer because OutputStream was already served.\\norg.javalite.activeweb.ControllerException: org.javalite.activeweb.WebException: Cannot return Writer because OutputStream was already served.; Cannot return Writer because OutputStream was already served.
at org.javalite.activeweb.DirectResponse.doProcess(DirectResponse.java:36)
at org.javalite.activeweb.ControllerResponse.process(ControllerResponse.java:54)
at org.javalite.activeweb.ControllerRunner.renderResponse(ControllerRunner.java:321)
at org.javalite.activeweb.ControllerRunner.run(ControllerRunner.java:69)
at org.javalite.activeweb.RequestDispatcher.doFilter(RequestDispatcher.java:210)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:169)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.redisson.tomcat.UsageValve.invoke(UsageValve.java:71)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Unknown Source)\\nCaused by: org.javalite.activeweb.WebException: Cannot return Writer because OutputStream was already served.
at org.javalite.activeweb.HttpServletResponseProxy.getWriter(HttpServletResponseProxy.java:157)
at org.javalite.activeweb.DirectResponse.doProcess(DirectResponse.java:
level:"ERROR",
logger:"app.filters.CatchAllFilter",
message:"",
stacktrace:"org.javalite.activeweb.ControllerException: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe; java.io.IOException: Broken pipe\\norg.javalite.activeweb.ControllerException: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe; java.io.IOException: Broken pipe
at org.javalite.activeweb.ControllerRunner.executeAction(ControllerRunner.java:137)
at org.javalite.activeweb.ControllerRunner.executeController(ControllerRunner.java:82)
at org.javalite.activeweb.ControllerRunner.run(ControllerRunner.java:61)
at org.javalite.activeweb.RequestDispatcher.doFilter(RequestDispatcher.java:210)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:169)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.redisson.tomcat.UsageValve.invoke(UsageValve.java:71)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Unknown Source)\\nCaused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:345)
at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:780)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:296)
at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:248)
at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:176)
at java.base/sun.nio.cs.StreamEncoder.implClose(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.lockedClose(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.close(Unknown Source)
at java.base/java.io.OutputStreamWriter.close(Unknown Source)
at org.apache.commons.csv.CSVPrinter.close(CSVPrinter.java:134)
at org.apache.commons.csv.CSVPrinter.close(CSVPrinter.java:118)
at app.controllers.rest.wholesaler.DelinquentController.searchDelinquency(DelinquentController.java:43)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.javalite.activeweb.ControllerRunner.executeAction(ControllerRunner.java:129)
... 23 more
Suppressed: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
\\tat org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:345)
\\tat org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:780)
\\tat org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:296)
\\tat org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:248)
\\tat org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:176)
\\tat app.controllers.rest.wholesaler.DelinquentController.searchDelinquency(DelinquentController.java:37)
\\t... 26 more
Caused by: java.io.IOException: Broken pipe
\\tat java.base/sun.nio.ch.SocketDispatcher.write0(Native Method)
\\tat java.base/sun.nio.ch.SocketDispatcher.write(Unknown Source)
\\tat java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
\\tat java.base/sun.nio.ch.IOUtil.write(Unknown Source)
\\tat java.base/sun.nio.ch.IOUti
level:"ERROR",
logger:"app.services.searches.AbstractSearch",
message: "Unable to write CSV record",
message:"java.io.IOException: Broken pipe",
stacktrace:"org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe\\norg.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:345)
at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:780)
at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:677)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:380)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:358)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:103)
at java.base/sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.lockedWrite(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.base/java.io.Writer.write(Unknown Source)
at java.base/java.io.OutputStreamWriter.append(Unknown Source)
at java.base/java.io.OutputStreamWriter.append(Unknown Source)
at java.base/java.io.OutputStreamWriter.append(Unknown Source)
at org.apache.commons.csv.CSVFormat.printWithQuotes(CSVFormat.java:2132)
at org.apache.commons.csv.CSVFormat.print(CSVFormat.java:1863)
at org.apache.commons.csv.CSVFormat.print(CSVFormat.java:1850)
at org.apache.commons.csv.CSVPrinter.print(CSVPrinter.java:169)
at org.apache.commons.csv.CSVPrinter.printRecord(CSVPrinter.java:262)
at org.apache.commons.csv.CSVPrinter.printRecord(CSVPrinter.java:281)
at app.services.searches.AbstractSearch.lambda$printQueryResults$2(AbstractSearch.java:126)
at org.javalite.activejdbc.RowProcessor.processRS(RowProcessor.java:98)
at org.javalite.activejdbc.RowProcessor.with(RowProcessor.java:73)
at app.services.searches.AbstractSearch.printQueryResults(AbstractSearch.java:124)
at app.services.searches.WholesalerDelinquentSearch.exportToTxt(WholesalerDelinquentSearch.java:179)
at app.controllers.rest.wholesaler.DelinquentController.searchDelinquency(DelinquentController.java:42)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.javalite.activeweb.ControllerRunner.executeAction(ControllerRunner.java:129)
at org.javalite.activeweb.ControllerRunner.executeController(ControllerRunner.java:82)
at org.javalite.activeweb.ControllerRunner.run(ControllerRunner.java:61)
at org.javalite.activeweb.RequestDispatcher.doFilter(RequestDispatcher.java:210)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:169)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at
The text was updated successfully, but these errors were encountered:
There is a strange case happens when a client requests a long download and then abandons the request. For instance, the download is taking 30 seconds, but the user closes the browser tab in the middle of the request. In case like that, ActiveWeb is catching this exception, and thinking that there is "something" wrong, is trying to render an error page. However, there is no browser to render it on, and it spirals with one exception after the other. Basically, this case was never considered :(.
The exceptions below are printed from a single request as a reaction to a browser abandoning it.
The goal of this task is to:
The text was updated successfully, but these errors were encountered: