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

vy pushed a commit to branch DatePatternConverter-non-TL-fix
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit fb9f2ebbcc5b2e33ce6bf073d3d92cd1cdacf340
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Tue May 23 22:19:09 2023 +0200

    Fix concurrent date-time formatting issue in `PatternLayout`
---
 .../log4j/core/pattern/DatePatternConverter.java   | 15 ++++++-------
 ...0_fix_DatePatternConverter_when_TL_disabled.xml | 26 ++++++++++++++++++++++
 2 files changed, 33 insertions(+), 8 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
index d4cd5a3095..00d1c21020 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
@@ -325,16 +325,15 @@ public final class DatePatternConverter extends 
LogEventPatternConverter impleme
     }
 
     private void formatWithoutThreadLocals(final Instant instant, final 
StringBuilder output) {
-        CachedTime cached = cachedTime.get();
+        final CachedTime effective;
+        final CachedTime cached = cachedTime.get();
         if (instant.getEpochSecond() != cached.epochSecond || 
instant.getNanoOfSecond() != cached.nanoOfSecond) {
-            final CachedTime newTime = new CachedTime(instant);
-            if (cachedTime.compareAndSet(cached, newTime)) {
-                cached = newTime;
-            } else {
-                cached = cachedTime.get();
-            }
+            effective = new CachedTime(instant);
+            cachedTime.compareAndSet(cached, effective);
+        } else {
+            effective = cached;
         }
-        output.append(cached.formatted);
+        output.append(effective.formatted);
     }
 
     /**
diff --git 
a/src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml 
b/src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml
new file mode 100644
index 0000000000..b1f4ab8de1
--- /dev/null
+++ b/src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       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="0" link="https://github.com/apache/logging-log4j2/issues/0"/>
+  <author name="Stephan Markwalder" id="smarkwal"/>
+  <author id="vy"/>
+  <description format="asciidoc">Fix concurrent date-time formatting issue in 
`PatternLayout`</description>
+</entry>

Reply via email to