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

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


The following commit(s) were added to refs/heads/2.x by this push:
     new 9e1a437a86 Avoid using released objects in `StackTraceStringResolver` 
(#1380)
9e1a437a86 is described below

commit 9e1a437a86f70cc58a4108533935403052d91094
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Mon Mar 20 22:28:22 2023 +0100

    Avoid using released objects in `StackTraceStringResolver` (#1380)
---
 .../json/resolver/StackTraceStringResolver.java        | 18 ++++++++++--------
 .../.2.x.x/1232_log4j-to-sfl4j-2-OSGiMetadata.xml      |  4 ++--
 .../.2.x.x/1284_redirect_old_javadoc_urls.xml          |  2 +-
 ...ceStringResolver_uses_instance_after_recycling.xml} |  5 ++---
 src/changelog/.2.x.x/OsgiServiceLocator_npe.xml        |  4 ++--
 5 files changed, 17 insertions(+), 16 deletions(-)

diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/StackTraceStringResolver.java
 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/StackTraceStringResolver.java
index 92c2d33252..b22463f9e7 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/StackTraceStringResolver.java
+++ 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/StackTraceStringResolver.java
@@ -16,14 +16,15 @@
  */
 package org.apache.logging.log4j.layout.template.json.resolver;
 
-import org.apache.logging.log4j.layout.template.json.util.*;
-
 import java.util.List;
+import java.util.function.Consumer;
 import java.util.function.Supplier;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
+import org.apache.logging.log4j.layout.template.json.util.*;
+
 /**
  * Exception stack trace to JSON string resolver used by {@link 
ExceptionResolver}.
  */
@@ -88,19 +89,20 @@ final class StackTraceStringResolver implements 
StackTraceResolver {
         final TruncatingBufferedPrintWriter srcWriter = 
srcWriterRecycler.acquire();
         try {
             throwable.printStackTrace(srcWriter);
-            final TruncatingBufferedPrintWriter dstWriter = 
truncate(srcWriter);
-            jsonWriter.writeString(dstWriter);
+            truncate(srcWriter, jsonWriter::writeString);
         } finally {
             srcWriterRecycler.release(srcWriter);
         }
     }
 
-    private TruncatingBufferedPrintWriter truncate(
-            final TruncatingBufferedPrintWriter srcWriter) {
+    private void truncate(
+            final TruncatingBufferedPrintWriter srcWriter,
+            final Consumer<TruncatingBufferedPrintWriter> 
effectiveWriterConsumer) {
 
         // Short-circuit if truncation is not enabled.
         if (!truncationEnabled) {
-            return srcWriter;
+            effectiveWriterConsumer.accept(srcWriter);
+            return;
         }
 
         // Allocate temporary buffers and truncate the input.
@@ -114,10 +116,10 @@ final class StackTraceStringResolver implements 
StackTraceResolver {
             } finally {
                 sequencePointerRecycler.release(sequencePointer);
             }
+            effectiveWriterConsumer.accept(dstWriter);
         } finally {
             dstWriterRecycler.release(dstWriter);
         }
-        return dstWriter;
 
     }
 
diff --git a/src/changelog/.2.x.x/1232_log4j-to-sfl4j-2-OSGiMetadata.xml 
b/src/changelog/.2.x.x/1232_log4j-to-sfl4j-2-OSGiMetadata.xml
index b166412c83..72f7efd88c 100644
--- a/src/changelog/.2.x.x/1232_log4j-to-sfl4j-2-OSGiMetadata.xml
+++ b/src/changelog/.2.x.x/1232_log4j-to-sfl4j-2-OSGiMetadata.xml
@@ -23,7 +23,7 @@
   <author id="hanneswell"/>
   <author name="Hannes Wellmann"/>
   <description format="asciidoc">
-    Adapt the OSGi metadata of log4j-to-slf4j to work with slf4j 1 and 2.
-    To achieve that use a version range of `[1.7,3)` for the imported slf4j 
packages.  
+    Adapt the OSGi metadata of `log4j-to-slf4j` to work with SLF4J 1 and 2.
+    To achieve that use a version range of `[1.7,3)` for the imported SLF4J 
packages.
   </description>
 </entry>
diff --git a/src/changelog/.2.x.x/1284_redirect_old_javadoc_urls.xml 
b/src/changelog/.2.x.x/1284_redirect_old_javadoc_urls.xml
index 368cf2bf4a..bbaa5eb939 100644
--- a/src/changelog/.2.x.x/1284_redirect_old_javadoc_urls.xml
+++ b/src/changelog/.2.x.x/1284_redirect_old_javadoc_urls.xml
@@ -22,5 +22,5 @@
   <issue id="1284" link="https://github.com/apache/logging-log4j2/pull/1284"/>
   <author id="vy"/>
   <author name="Alexander Brandes"/>
-  <description format="asciidoc"> <![CDATA[Redirect old `/<module>/apidocs` 
URLs (broken in 2.20.0) to `/javadoc/<module>`]]></description>
+  <description format="asciidoc"><![CDATA[Redirect old `/<module>/apidocs` 
URLs (broken in 2.20.0) to `/javadoc/<module>`]]></description>
 </entry>
diff --git a/src/changelog/.2.x.x/1284_redirect_old_javadoc_urls.xml 
b/src/changelog/.2.x.x/1380_StackTraceStringResolver_uses_instance_after_recycling.xml
similarity index 81%
copy from src/changelog/.2.x.x/1284_redirect_old_javadoc_urls.xml
copy to 
src/changelog/.2.x.x/1380_StackTraceStringResolver_uses_instance_after_recycling.xml
index 368cf2bf4a..91b3fe2deb 100644
--- a/src/changelog/.2.x.x/1284_redirect_old_javadoc_urls.xml
+++ 
b/src/changelog/.2.x.x/1380_StackTraceStringResolver_uses_instance_after_recycling.xml
@@ -19,8 +19,7 @@
        xmlns="http://logging.apache.org/log4j/changelog";
        xsi:schemaLocation="http://logging.apache.org/log4j/changelog 
https://logging.apache.org/log4j/changelog-0.1.1.xsd";
        type="fixed">
-  <issue id="1284" link="https://github.com/apache/logging-log4j2/pull/1284"/>
+  <issue id="1380" link="https://github.com/apache/logging-log4j2/pull/1380"/>
   <author id="vy"/>
-  <author name="Alexander Brandes"/>
-  <description format="asciidoc"> <![CDATA[Redirect old `/<module>/apidocs` 
URLs (broken in 2.20.0) to `/javadoc/<module>`]]></description>
+  <description format="asciidoc">Avoid using released objects in 
`StackTraceStringResolver` of JSON Template Layout</description>
 </entry>
diff --git a/src/changelog/.2.x.x/OsgiServiceLocator_npe.xml 
b/src/changelog/.2.x.x/OsgiServiceLocator_npe.xml
index ff76cffcdd..dedb09c08a 100644
--- a/src/changelog/.2.x.x/OsgiServiceLocator_npe.xml
+++ b/src/changelog/.2.x.x/OsgiServiceLocator_npe.xml
@@ -22,7 +22,7 @@
   <author id="ggregory"/>
   <description format="asciidoc">
     Log a status error event instead of an NPE in 
-    org.apache.logging.log4j.util.OsgiServiceLocator.loadServices(Class, 
Lookup, boolean)
-    when a bundle has no valid BundleContext for a service type.
+    `OsgiServiceLocator.loadServices(Class, Lookup, boolean)`
+    when a bundle has no valid `BundleContext` for a service type
   </description>
 </entry>

Reply via email to