This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3696
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 761830dd0b55f7ea1754b5d38f42a6c2ddea4266
Author: danhaywood <[email protected]>
AuthorDate: Tue Mar 12 12:46:03 2024 +0000

    CAUSEWAY-3696: don't log ClientAbortExceptions
---
 .../logonlog/CausewayLogOnExceptionFilter.java     | 29 ++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git 
a/core/webapp/src/main/java/org/apache/causeway/core/webapp/modules/logonlog/CausewayLogOnExceptionFilter.java
 
b/core/webapp/src/main/java/org/apache/causeway/core/webapp/modules/logonlog/CausewayLogOnExceptionFilter.java
index 500efd975e..7376c5bf10 100644
--- 
a/core/webapp/src/main/java/org/apache/causeway/core/webapp/modules/logonlog/CausewayLogOnExceptionFilter.java
+++ 
b/core/webapp/src/main/java/org/apache/causeway/core/webapp/modules/logonlog/CausewayLogOnExceptionFilter.java
@@ -39,12 +39,12 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * Simply logs the URL of any request that causes an exception to be thrown.
+ * Simply logs the URL of any request that causes an exception to be thrown 
(but will swallow any
+ * ClientAbortExceptions, as these represent the end user navigating away 
without waiting for a response)
  */
 @Log4j2
 public class CausewayLogOnExceptionFilter implements Filter {
 
-    //@Autowired private ExceptionRecognizerService exceptionRecognizerService;
 
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
@@ -54,12 +54,37 @@ public class CausewayLogOnExceptionFilter implements Filter 
{
     public void destroy() {
     }
 
+    /**
+     *
+     * eg:
+     * <pre>
+     *     yyyy-MM-ddT11:37:40.905753834Z
+     *     yyyy-MM-ddT11:37:40.905761428Z 
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken 
pipe
+     *     yyyy-MM-ddT11:37:40.905767047Z      at 
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:309) 
~[tomcat-embed-core-9.0.83.jar:9.0.83]
+     *     yyyy-MM-ddT11:37:40.905772622Z      at 
org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:271) 
~[tomcat-embed-core-9.0.83.jar:9.0.83]
+     *     yyyy-MM-ddT11:37:40.905778518Z      at 
org.apache.catalina.connector.Response.flushBuffer(Response.java:494) 
~[tomcat-embed-core-9.0.83.jar:9.0.83]
+     *     yyyy-MM-ddT11:37:40.905784572Z      at 
org.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade.java:256)
 ~[tomcat-embed-core-9.0.83.jar:9.0.83]
+     *     yyyy-MM-ddT11:37:40.905790091Z      at 
org.apache.wicket.protocol.http.servlet.ServletWebResponse.flush(ServletWebResponse.java:315)
 ~[wicket-core-9.16.0.jar:9.16.0]
+     *     yyyy-MM-ddT11:37:40.905795414Z      at 
org.apache.wicket.protocol.http.HeaderBufferingWebResponse.flush(HeaderBufferingWebResponse.java:98)
 ~[wicket-core-9.16.0.jar:9.16.0]
+     *     yyyy-MM-ddT11:37:40.905800948Z      at 
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:280)
 ~[wicket-core-9.16.0.jar:9.16.0]
+     *     yyyy-MM-ddT11:37:40.905806754Z      at 
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:208)
 ~[wicket-core-9.16.0.jar:9.16.0]
+     *     yyyy-MM-ddT11:37:40.905850671Z      at 
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:307) 
~[wicket-core-9.16.0.jar:9.16.0]
+     *     yyyy-MM-ddT11:37:40.905861372Z      at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.83.jar:9.0.83]
+     *     yyyy-MM-ddT11:37:40.905883937Z      at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.83.jar:9.0.83]
+     *     yyyy-MM-ddT11:37:40.905886000Z      at 
org.apache.isis.core.webapp.modules.logonlog.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:60)
+     * </pre>
+     */
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
         try {
             chain.doFilter(request, response);
         } catch (Exception ex) {
 
+            // browser has navigated away.
+            
if(ex.getClass().getCanonicalName().equals("org.apache.catalina.connector.ClientAbortException"))
 {
+                return; // don't log or even throw
+            }
+
             if(ex instanceof IOException) {
                 val url = ((HttpServletRequest) 
request).getRequestURL().toString();
                 if(url.endsWith(".css")

Reply via email to