From e20198ff94efbce22ea0a26e7710e7e99fc648ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Michael?= Date: Tue, 9 Sep 2025 14:52:47 +0200 Subject: [PATCH] ListAppender: Synchronize on list while iterating * Returned snapshots no longer require an unmodifiable view --- .../log4j/core/test/appender/ListAppender.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/ListAppender.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/ListAppender.java index f941db12674..f36d4082cb8 100644 --- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/ListAppender.java +++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/ListAppender.java @@ -195,14 +195,18 @@ public ListAppender clear() { return this; } - /** Returns an immutable snapshot of captured log events */ + /** Returns a snapshot of captured log events */ public List getEvents() { - return Collections.unmodifiableList(new ArrayList<>(events)); + synchronized (events) { + return new ArrayList<>(events); + } } - /** Returns an immutable snapshot of captured messages */ + /** Returns a snapshot of captured messages */ public List getMessages() { - return Collections.unmodifiableList(new ArrayList<>(messages)); + synchronized (messages) { + return new ArrayList<>(messages); + } } /** @@ -215,9 +219,11 @@ public List getMessages(final int minSize, final long timeout, final Tim return getMessages(); } - /** Returns an immutable snapshot of captured data */ + /** Returns a snapshot of captured data */ public List getData() { - return Collections.unmodifiableList(new ArrayList<>(data)); + synchronized (data) { + return new ArrayList<>(data); + } } public static ListAppender createAppender(