From c1a62e9f1828b378eddfe316cb0be5802fa85c0f Mon Sep 17 00:00:00 2001 From: yangjie01 Date: Wed, 11 Sep 2024 01:32:03 +0800 Subject: [PATCH 1/2] init --- .../map/UnmodifiableArrayBackedMapTest.java | 13 +++++++------ .../internal/map/UnmodifiableArrayBackedMap.java | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMapTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMapTest.java index 5957a931bf3..3f43e3e2c4d 100644 --- a/log4j-api-test/src/test/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMapTest.java +++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMapTest.java @@ -55,18 +55,19 @@ private HashMap getTestParameters(int numParams) { @Test public void testCopyAndPut() { UnmodifiableArrayBackedMap testMap = UnmodifiableArrayBackedMap.EMPTY_MAP; - testMap = testMap.copyAndPut("1", "value1"); - assertTrue(testMap.containsKey("1")); - assertEquals(testMap.get("1"), "value1"); + testMap = testMap.copyAndPut("6", "value6"); + assertTrue(testMap.containsKey("6")); + assertEquals(testMap.get("6"), "value6"); - testMap = testMap.copyAndPut("1", "another value"); - assertTrue(testMap.containsKey("1")); - assertEquals(testMap.get("1"), "another value"); + testMap = testMap.copyAndPut("6", "another value"); + assertTrue(testMap.containsKey("6")); + assertEquals(testMap.get("6"), "another value"); HashMap newValues = getTestParameters(); testMap = testMap.copyAndPutAll(newValues); assertEquals(testMap.get("1"), "value1"); assertEquals(testMap.get("4"), "value4"); + assertEquals(testMap.get("6"), "another value"); } @Test diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMap.java index cab4dc2eb71..eada687424f 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMap.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/internal/map/UnmodifiableArrayBackedMap.java @@ -282,6 +282,7 @@ public UnmodifiableArrayBackedMap copyAndPutAll(Map entriesToAdd // copy the contents of the current map (if any) if (numEntries > 0) { System.arraycopy(backingArray, 0, newMap.backingArray, 0, numEntries * 2 + 1); + newMap.numEntries = numEntries; } for (Map.Entry entry : entriesToAdd.entrySet()) { From 408447b33a7b85a6aaf6c1fac9c8b3accc8f6f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20Yaz=C4=B1c=C4=B1?= Date: Thu, 12 Sep 2024 13:46:46 +0200 Subject: [PATCH 2/2] Add changelog entry --- src/changelog/.2.x.x/2942_fix_ThreadContext_putAll.xml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/changelog/.2.x.x/2942_fix_ThreadContext_putAll.xml diff --git a/src/changelog/.2.x.x/2942_fix_ThreadContext_putAll.xml b/src/changelog/.2.x.x/2942_fix_ThreadContext_putAll.xml new file mode 100644 index 00000000000..c6dd4838dea --- /dev/null +++ b/src/changelog/.2.x.x/2942_fix_ThreadContext_putAll.xml @@ -0,0 +1,8 @@ + + + + Fix `putAll()` in the default thread context map implementation +