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

pkarwasz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit aada21dae6a5db33951ed91663355907dad918a0
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Sun Sep 11 15:18:44 2022 +0200

    [LOG4J2-708] Improve `Log4jServletFilter` async behavior
    
    The `Log4jServletFilter` filter should run on all the threads a request
    is run. The current version ignores all async dispatches.
---
 .../src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java  | 2 ++
 .../test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java  | 1 +
 2 files changed, 3 insertions(+)

diff --git 
a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java 
b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java
index a15584dec9..af17d5da7b 100644
--- 
a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java
+++ 
b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java
@@ -87,6 +87,8 @@ public class Log4jServletFilter implements Filter {
             } finally {
                 this.initializer.clearLoggerContext();
                 CURRENT_REQUEST.remove();
+                // Execute once per thread
+                request.removeAttribute(ALREADY_FILTERED_ATTRIBUTE);
             }
         }
     }
diff --git 
a/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java
 
b/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java
index 07a1fb4340..5a891cce62 100644
--- 
a/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java
+++ 
b/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java
@@ -93,6 +93,7 @@ public class Log4jServletFilterTest {
         then(chain).should().doFilter(same(request), same(response));
         then(chain).shouldHaveNoMoreInteractions();
         then(initializer).should().clearLoggerContext();
+        
then(request).should().removeAttribute(Log4jServletFilter.ALREADY_FILTERED_ATTRIBUTE);
     }
 
     @Test

Reply via email to