You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2023/09/19 12:24:32 UTC

[logging-log4j2] branch 2.x updated: ReusableMessageFactory: change static fields to instance

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

pkarwasz 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 e86d28bdb9 ReusableMessageFactory: change static fields to instance
e86d28bdb9 is described below

commit e86d28bdb927f8047b924eb459f4c63bd2e43176
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Tue Sep 19 12:41:21 2023 +0200

    ReusableMessageFactory: change static fields to instance
    
    There is no reason for `ReusableMessageFactory` to have static
    `ThreadLocal` fields. Besides this breaks (parallel) tests since
    multiple instances of `ReusableMessageFactory` are not independent.
---
 .../apache/logging/log4j/message/ReusableMessageFactory.java | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
index e02f2fd163..bcc074332f 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
@@ -38,9 +38,9 @@ public final class ReusableMessageFactory implements MessageFactory2, Serializab
     public static final ReusableMessageFactory INSTANCE = new ReusableMessageFactory();
 
     private static final long serialVersionUID = -8970940216592525651L;
-    private static ThreadLocal<ReusableParameterizedMessage> threadLocalParameterized = new ThreadLocal<>();
-    private static ThreadLocal<ReusableSimpleMessage> threadLocalSimpleMessage = new ThreadLocal<>();
-    private static ThreadLocal<ReusableObjectMessage> threadLocalObjectMessage = new ThreadLocal<>();
+    private final ThreadLocal<ReusableParameterizedMessage> threadLocalParameterized = new ThreadLocal<>();
+    private final ThreadLocal<ReusableSimpleMessage> threadLocalSimpleMessage = new ThreadLocal<>();
+    private final ThreadLocal<ReusableObjectMessage> threadLocalObjectMessage = new ThreadLocal<>();
 
     /**
      * Constructs a message factory.
@@ -48,7 +48,7 @@ public final class ReusableMessageFactory implements MessageFactory2, Serializab
     public ReusableMessageFactory() {
     }
 
-    private static ReusableParameterizedMessage getParameterized() {
+    private ReusableParameterizedMessage getParameterized() {
         ReusableParameterizedMessage result = threadLocalParameterized.get();
         if (result == null) {
             result = new ReusableParameterizedMessage();
@@ -57,7 +57,7 @@ public final class ReusableMessageFactory implements MessageFactory2, Serializab
         return result.reserved ? new ReusableParameterizedMessage().reserve() : result.reserve();
     }
 
-    private static ReusableSimpleMessage getSimple() {
+    private ReusableSimpleMessage getSimple() {
         ReusableSimpleMessage result = threadLocalSimpleMessage.get();
         if (result == null) {
             result = new ReusableSimpleMessage();
@@ -66,7 +66,7 @@ public final class ReusableMessageFactory implements MessageFactory2, Serializab
         return result;
     }
 
-    private static ReusableObjectMessage getObject() {
+    private ReusableObjectMessage getObject() {
         ReusableObjectMessage result = threadLocalObjectMessage.get();
         if (result == null) {
             result = new ReusableObjectMessage();