From fb9f2ebbcc5b2e33ce6bf073d3d92cd1cdacf340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20Yaz=C4=B1c=C4=B1?= Date: Tue, 23 May 2023 22:19:09 +0200 Subject: [PATCH 1/2] Fix concurrent date-time formatting issue in `PatternLayout` --- .../core/pattern/DatePatternConverter.java | 15 +++++------ ..._DatePatternConverter_when_TL_disabled.xml | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml 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 d4cd5a3095e..00d1c210207 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 @@ private Formatter getThreadLocalFormatter() { } 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 00000000000..b1f4ab8de15 --- /dev/null +++ b/src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml @@ -0,0 +1,26 @@ + + + + + + + Fix concurrent date-time formatting issue in `PatternLayout` + From 40667f2df2831eacabc7366b07225b2004e2884d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20Yaz=C4=B1c=C4=B1?= Date: Tue, 23 May 2023 22:22:30 +0200 Subject: [PATCH 2/2] Fix the changelog issue ID --- ...d.xml => 1485_fix_DatePatternConverter_when_TL_disabled.xml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/changelog/.2.x.x/{0_fix_DatePatternConverter_when_TL_disabled.xml => 1485_fix_DatePatternConverter_when_TL_disabled.xml} (94%) diff --git a/src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml b/src/changelog/.2.x.x/1485_fix_DatePatternConverter_when_TL_disabled.xml similarity index 94% rename from src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml rename to src/changelog/.2.x.x/1485_fix_DatePatternConverter_when_TL_disabled.xml index b1f4ab8de15..86886dd651c 100644 --- a/src/changelog/.2.x.x/0_fix_DatePatternConverter_when_TL_disabled.xml +++ b/src/changelog/.2.x.x/1485_fix_DatePatternConverter_when_TL_disabled.xml @@ -19,7 +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"> - + Fix concurrent date-time formatting issue in `PatternLayout`