You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/08 16:08:52 UTC

[logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

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

ggregory pushed a change to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.


    from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the 1.2 bridge.
     new 97f3153  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.
     new 97f9201  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 log4j-api/revapi.json                                        |  1 +
 .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
 .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
 .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
 .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12 ++++++++----
 .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
 .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12 ++++++------
 .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
 8 files changed, 32 insertions(+), 25 deletions(-)

[logging-log4j2] 02/02: Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 97f92017727fa86dec6b20a4293fc08393dd12f6
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Jan 8 11:08:49 2022 -0500

    Replace internal use of synchronized java.util.Stack with unsynchronized
    java.util.Deque. These objects are not shared between threads.
    
    Split commit for cherry-picking to master.
---
 .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12 ++++++++----
 .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/StackLocatorUtilTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/StackLocatorUtilTest.java
index 53c4db6..f42cf1e 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/StackLocatorUtilTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/StackLocatorUtilTest.java
@@ -16,15 +16,19 @@
  */
 package org.apache.logging.log4j.util;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import java.util.Deque;
 import java.util.Stack;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.BlockJUnit4ClassRunner;
 import org.junit.runners.ParentRunner;
-import sun.reflect.Reflection;
 
-import static org.junit.Assert.*;
+import sun.reflect.Reflection;
 
 /** 
  * Tests {@link StackLocatorUtilTest}.
@@ -65,10 +69,10 @@ public class StackLocatorUtilTest {
 
     @Test
     public void testGetCurrentStackTrace() throws Exception {
-        final Stack<Class<?>> classes = StackLocatorUtil.getCurrentStackTrace();
+        final Deque<Class<?>> classes = StackLocatorUtil.getCurrentStackTrace();
         final Stack<Class<?>> reversed = new Stack<>();
         reversed.ensureCapacity(classes.size());
-        while (!classes.empty()) {
+        while (!classes.isEmpty()) {
             reversed.push(classes.pop());
         }
         while (reversed.peek() != StackLocatorUtil.class) {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThrowableProxyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThrowableProxyTest.java
index 4900476..6f43ca5 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThrowableProxyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThrowableProxyTest.java
@@ -33,9 +33,10 @@ import java.net.InetSocketAddress;
 import java.nio.channels.ServerSocketChannel;
 import java.security.Permission;
 import java.security.SecureRandom;
+import java.util.ArrayDeque;
+import java.util.Deque;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Stack;
 
 import javax.crypto.BadPaddingException;
 import javax.crypto.Cipher;
@@ -370,7 +371,7 @@ public class ThrowableProxyTest {
     @Test
     public void testStack() {
         final Map<String, ThrowableProxyHelper.CacheEntry> map = new HashMap<>();
-        final Stack<Class<?>> stack = new Stack<>();
+        final Deque<Class<?>> stack = new ArrayDeque<>();
         final Throwable throwable = new IllegalStateException("This is a test");
         final ThrowableProxy proxy = new ThrowableProxy(throwable);
         final ExtendedStackTraceElement[] callerPackageData = ThrowableProxyHelper.toExtendedStackTrace(proxy, stack, map, null,
@@ -385,7 +386,7 @@ public class ThrowableProxyTest {
      */
     @Test
     public void testStackWithUnloadableClass() throws Exception {
-        final Stack<Class<?>> stack = new Stack<>();
+        final Deque<Class<?>> stack = new ArrayDeque<>();
         final Map<String, ThrowableProxyHelper.CacheEntry> map = new HashMap<>();
 
         final String runtimeExceptionThrownAtUnloadableClass_base64 = "rO0ABXNyABpqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbp5fBkcKNIPlAgAAeHIAE2phdmEubGFuZy5FeGNlcHRpb27Q/R8+GjscxAIAAHhyABNqYXZhLmxhbmcuVGhyb3dhYmxl1cY1Jzl3uMsDAANMAAVjYXVzZXQAFUxqYXZhL2xhbmcvVGhyb3dhYmxlO0wADWRldGFpbE1lc3NhZ2V0ABJMamF2YS9sYW5nL1N0cmluZztbAApzdGFja1RyYWNldAAeW0xqYXZhL2xhbmcvU3RhY2tUcmFjZUVsZW1lbnQ7eHBxAH4ABnB1cgAeW0xqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnQ7AkYqPDz9IjkCAAB4cAAAAAFzcgAbamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVtZ [...]

[logging-log4j2] 01/02: Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 97f3153b73ab071a69c2e61e0130fd0104d45407
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Jan 8 11:08:40 2022 -0500

    Replace internal use of synchronized java.util.Stack with unsynchronized
    java.util.Deque. These objects are not shared between threads.
    
    Split commit for cherry-picking to master.
---
 log4j-api/revapi.json                                        |  1 +
 .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
 .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
 .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
 .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
 .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12 ++++++------
 6 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/log4j-api/revapi.json b/log4j-api/revapi.json
index d362403..3a920d2 100644
--- a/log4j-api/revapi.json
+++ b/log4j-api/revapi.json
@@ -10,6 +10,7 @@
             "org\\.apache\\.logging\\.log4j\\.util\\.PrivateSecurityManagerStackTraceUtil",
             "org\\.apache\\.logging\\.log4j\\.util\\.PropertiesUtil",
             "org\\.apache\\.logging\\.log4j\\.util\\.ProviderUtil",
+            "org\\.apache\\.logging\\.log4j\\.util\\.StackLocator",
             "org\\.apache\\.logging\\.log4j\\.util\\.StackLocatorUtil"
           ]
         }
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/PrivateSecurityManagerStackTraceUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/PrivateSecurityManagerStackTraceUtil.java
index 51bca15..d8852aa 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/PrivateSecurityManagerStackTraceUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/PrivateSecurityManagerStackTraceUtil.java
@@ -16,7 +16,8 @@
  */
 package org.apache.logging.log4j.util;
 
-import java.util.Stack;
+import java.util.ArrayDeque;
+import java.util.Deque;
 
 /**
  * Internal utility to share a fast implementation of {@link #getCurrentStackTrace()}
@@ -50,10 +51,9 @@ final class PrivateSecurityManagerStackTraceUtil {
     }
 
     // benchmarks show that using the SecurityManager is much faster than looping through getCallerClass(int)
-    static Stack<Class<?>> getCurrentStackTrace() {
+    static Deque<Class<?>> getCurrentStackTrace() {
         final Class<?>[] array = SECURITY_MANAGER.getClassContext();
-        final Stack<Class<?>> classes = new Stack<>();
-        classes.ensureCapacity(array.length);
+        final Deque<Class<?>> classes = new ArrayDeque<>(array.length);
         for (final Class<?> clazz : array) {
             classes.push(clazz);
         }
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocator.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocator.java
index 495b66f..44bfafa 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocator.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocator.java
@@ -17,7 +17,8 @@
 package org.apache.logging.log4j.util;
 
 import java.lang.reflect.Method;
-import java.util.Stack;
+import java.util.ArrayDeque;
+import java.util.Deque;
 import java.util.function.Predicate;
 
 /**
@@ -193,13 +194,13 @@ public final class StackLocator {
 
     // migrated from ThrowableProxy
     @PerformanceSensitive
-    public Stack<Class<?>> getCurrentStackTrace() {
+    public Deque<Class<?>> getCurrentStackTrace() {
         // benchmarks show that using the SecurityManager is much faster than looping through getCallerClass(int)
         if (PrivateSecurityManagerStackTraceUtil.isEnabled()) {
             return PrivateSecurityManagerStackTraceUtil.getCurrentStackTrace();
         }
         // slower version using getCallerClass where we cannot use a SecurityManager
-        final Stack<Class<?>> classes = new Stack<>();
+        final Deque<Class<?>> classes = new ArrayDeque<>();
         Class<?> clazz;
         for (int i = 1; null != (clazz = getCallerClass(i)); i++) {
             classes.push(clazz);
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
index 6f8a388..f9fb1b4 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
@@ -16,8 +16,8 @@
  */
 package org.apache.logging.log4j.util;
 
+import java.util.Deque;
 import java.util.NoSuchElementException;
-import java.util.Stack;
 import java.util.function.Predicate;
 
 import org.apache.logging.log4j.status.StatusLogger;
@@ -112,7 +112,7 @@ public final class StackLocatorUtil {
 
     // migrated from ThrowableProxy
     @PerformanceSensitive
-    public static Stack<Class<?>> getCurrentStackTrace() {
+    public static Deque<Class<?>> getCurrentStackTrace() {
         return stackLocator.getCurrentStackTrace();
     }
 
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
index e63fb63..bd10224 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
@@ -18,13 +18,13 @@ package org.apache.logging.log4j.core.impl;
 
 import java.io.Serializable;
 import java.util.Arrays;
+import java.util.Deque;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-import java.util.Stack;
 
 import org.apache.logging.log4j.core.pattern.PlainTextRenderer;
 import org.apache.logging.log4j.core.pattern.TextRenderer;
@@ -108,7 +108,7 @@ public class ThrowableProxy implements Serializable {
         this.message = throwable.getMessage();
         this.localizedMessage = throwable.getLocalizedMessage();
         final Map<String, ThrowableProxyHelper.CacheEntry> map = new HashMap<>();
-        final Stack<Class<?>> stack = StackLocatorUtil.getCurrentStackTrace();
+        final Deque<Class<?>> stack = StackLocatorUtil.getCurrentStackTrace();
         this.extendedStackTrace = ThrowableProxyHelper.toExtendedStackTrace(this, stack, map, null, throwable.getStackTrace());
         final Throwable throwableCause = throwable.getCause();
         final Set<Throwable> causeVisited = new HashSet<>(1);
@@ -127,7 +127,7 @@ public class ThrowableProxy implements Serializable {
      * @param suppressedVisited TODO
      * @param causeVisited      TODO
      */
-    private ThrowableProxy(final Throwable parent, final Stack<Class<?>> stack,
+    private ThrowableProxy(final Throwable parent, final Deque<Class<?>> stack,
                            final Map<String, ThrowableProxyHelper.CacheEntry> map,
                            final Throwable cause, final Set<Throwable> suppressedVisited,
                            final Set<Throwable> causeVisited) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
index 58f9d15..955bdd7 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
@@ -16,18 +16,18 @@
  */
 package org.apache.logging.log4j.core.impl;
 
-import org.apache.logging.log4j.core.util.Loader;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.util.LoaderUtil;
-
 import java.net.URL;
 import java.security.CodeSource;
 import java.util.ArrayList;
+import java.util.Deque;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.Stack;
+
+import org.apache.logging.log4j.core.util.Loader;
+import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.LoaderUtil;
 
 /**
  * {@link ThrowableProxyHelper} provides utilities required to initialize a new {@link ThrowableProxy}
@@ -67,7 +67,7 @@ class ThrowableProxyHelper {
      */
     static ExtendedStackTraceElement[] toExtendedStackTrace(
             final ThrowableProxy src,
-            final Stack<Class<?>> stack, final Map<String, CacheEntry> map,
+            final Deque<Class<?>> stack, final Map<String, CacheEntry> map,
             final StackTraceElement[] rootTrace,
             final StackTraceElement[] stackTrace) {
         int stackLength;

Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Carter Kozak <ck...@ckozak.net>.
This may fix the regression: https://github.com/apache/logging-log4j2/pull/714

-ck

On Mon, Jan 17, 2022, at 13:50, Carter Kozak wrote:
> Please revert, this breaks stacklocatorutil on java 9+ with the following:
> 
> Caused by: java.lang.NoSuchMethodError: 'java.util.Deque org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
> at org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
> at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
> at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
> at org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
> at org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
> at org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
> at org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
> at org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
> at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
> ... 50 more
> 
> -ck
> 
> On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
> > This is an automated email from the ASF dual-hosted git repository.
> > 
> > ggregory pushed a change to branch release-2.x
> > in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
> > 
> > 
> >     from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the 1.2 bridge.
> >      new 97f3153  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.
> >      new 97f9201  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.
> > 
> > The 2 revisions listed above as "new" are entirely new to this
> > repository and will be described in separate emails.  The revisions
> > listed as "add" were already present in the repository and have only
> > been added to this reference.
> > 
> > 
> > Summary of changes:
> > log4j-api/revapi.json                                        |  1 +
> > .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
> > .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
> > .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
> > .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12 ++++++++----
> > .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
> > .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12 ++++++------
> > .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
> > 8 files changed, 32 insertions(+), 25 deletions(-)
> > 
> 

Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Carter Kozak <ck...@ckozak.net>.
Adding a test in a java9+ module which passes an exception does not work after the linked commit (e.g. https://github.com/apache/logging-log4j2/pull/713), it seems we are missing test coverage. Testability is a strong reason to avoid multi-release jars, but the alternatives leave a lot to be desired as well.

-ck

On Mon, Jan 17, 2022, at 14:48, Gary Gregory wrote:
> How does this stack trace happen when my full local builds and github builds are green? Are we missing a test for this feature?
> 
> Gary
> 
> 
> On Mon, Jan 17, 2022, 13:51 Carter Kozak <ck...@ckozak.net> wrote:
>> __
>> Please revert, this breaks stacklocatorutil on java 9+ with the following:
>> 
>> Caused by: java.lang.NoSuchMethodError: 'java.util.Deque org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
>> at org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
>> at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
>> at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
>> at org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
>> at org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
>> at org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
>> at org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
>> at org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
>> at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
>> ... 50 more
>> 
>> -ck
>> 
>> On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
>>> This is an automated email from the ASF dual-hosted git repository.
>>> 
>>> ggregory pushed a change to branch release-2.x
>>> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
>>> 
>>> 
>>>     from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the 1.2 bridge.
>>>      new 97f3153  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.
>>>      new 97f9201  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.
>>> 
>>> The 2 revisions listed above as "new" are entirely new to this
>>> repository and will be described in separate emails.  The revisions
>>> listed as "add" were already present in the repository and have only
>>> been added to this reference.
>>> 
>>> 
>>> Summary of changes:
>>> log4j-api/revapi.json                                        |  1 +
>>> .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
>>> .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
>>> .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
>>> .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12 ++++++++----
>>> .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
>>> .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12 ++++++------
>>> .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
>>> 8 files changed, 32 insertions(+), 25 deletions(-)
>>> 
>> 

Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Ralph Goers <ra...@dslextreme.com>.
This could be fixed. It would require adding a log4j-api-java9-tests module that sets toolchains 
to Java 9 and runs whatever tests are in the module. Same for Log4j-core. You don’t need to 
run the full suite of tests. Just the stuff that is in the META-INF/versions directory.

Ralph

> On Jan 17, 2022, at 12:49 PM, Ralph Goers <ra...@dslextreme.com> wrote:
> 
> Yes. The unit tests for core only exercise Java 8 as the build happens with Java 8.
> 
> Ralph
> 
> 
> 
>> On Jan 17, 2022, at 12:48 PM, Gary Gregory <ga...@gmail.com> wrote:
>> 
>> How does this stack trace happen when my full local builds and github
>> builds are green? Are we missing a test for this feature?
>> 
>> Gary
>> 
>> 
>> On Mon, Jan 17, 2022, 13:51 Carter Kozak <ck...@ckozak.net> wrote:
>> 
>>> Please revert, this breaks stacklocatorutil on java 9+ with the following:
>>> 
>>> Caused by: java.lang.NoSuchMethodError: 'java.util.Deque
>>> org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
>>> at
>>> org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
>>> at
>>> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
>>> at
>>> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
>>> at
>>> org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
>>> at
>>> org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
>>> at
>>> org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
>>> at
>>> org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
>>> at
>>> org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
>>> at
>>> org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
>>> ... 50 more
>>> 
>>> -ck
>>> 
>>> On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
>>> 
>>> This is an automated email from the ASF dual-hosted git repository.
>>> 
>>> ggregory pushed a change to branch release-2.x
>>> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
>>> 
>>> 
>>>   from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the
>>> 1.2 bridge.
>>>    new 97f3153  Replace internal use of synchronized java.util.Stack
>>> with unsynchronized java.util.Deque. These objects are not shared between
>>> threads.
>>>    new 97f9201  Replace internal use of synchronized java.util.Stack
>>> with unsynchronized java.util.Deque. These objects are not shared between
>>> threads.
>>> 
>>> The 2 revisions listed above as "new" are entirely new to this
>>> repository and will be described in separate emails.  The revisions
>>> listed as "add" were already present in the repository and have only
>>> been added to this reference.
>>> 
>>> 
>>> Summary of changes:
>>> log4j-api/revapi.json                                        |  1 +
>>> .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
>>> .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
>>> .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
>>> .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12
>>> ++++++++----
>>> .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
>>> .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12
>>> ++++++------
>>> .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
>>> 8 files changed, 32 insertions(+), 25 deletions(-)
>>> 
>>> 
>>> 
> 


Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Ralph Goers <ra...@dslextreme.com>.
Yes. The unit tests for core only exercise Java 8 as the build happens with Java 8.

Ralph



> On Jan 17, 2022, at 12:48 PM, Gary Gregory <ga...@gmail.com> wrote:
> 
> How does this stack trace happen when my full local builds and github
> builds are green? Are we missing a test for this feature?
> 
> Gary
> 
> 
> On Mon, Jan 17, 2022, 13:51 Carter Kozak <ck...@ckozak.net> wrote:
> 
>> Please revert, this breaks stacklocatorutil on java 9+ with the following:
>> 
>> Caused by: java.lang.NoSuchMethodError: 'java.util.Deque
>> org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
>> at
>> org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
>> at
>> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
>> at
>> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
>> at
>> org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
>> at
>> org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
>> at
>> org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
>> at
>> org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
>> at
>> org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
>> at
>> org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
>> ... 50 more
>> 
>> -ck
>> 
>> On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
>> 
>> This is an automated email from the ASF dual-hosted git repository.
>> 
>> ggregory pushed a change to branch release-2.x
>> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
>> 
>> 
>>    from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the
>> 1.2 bridge.
>>     new 97f3153  Replace internal use of synchronized java.util.Stack
>> with unsynchronized java.util.Deque. These objects are not shared between
>> threads.
>>     new 97f9201  Replace internal use of synchronized java.util.Stack
>> with unsynchronized java.util.Deque. These objects are not shared between
>> threads.
>> 
>> The 2 revisions listed above as "new" are entirely new to this
>> repository and will be described in separate emails.  The revisions
>> listed as "add" were already present in the repository and have only
>> been added to this reference.
>> 
>> 
>> Summary of changes:
>> log4j-api/revapi.json                                        |  1 +
>> .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
>> .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
>> .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
>> .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12
>> ++++++++----
>> .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
>> .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12
>> ++++++------
>> .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
>> 8 files changed, 32 insertions(+), 25 deletions(-)
>> 
>> 
>> 


Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Gary Gregory <ga...@gmail.com>.
How does this stack trace happen when my full local builds and github
builds are green? Are we missing a test for this feature?

Gary


On Mon, Jan 17, 2022, 13:51 Carter Kozak <ck...@ckozak.net> wrote:

> Please revert, this breaks stacklocatorutil on java 9+ with the following:
>
> Caused by: java.lang.NoSuchMethodError: 'java.util.Deque
> org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
> at
> org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
> at
> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
> at
> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
> at
> org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
> at
> org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
> at
> org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
> at
> org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
> at
> org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
> at
> org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
> ... 50 more
>
> -ck
>
> On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> ggregory pushed a change to branch release-2.x
> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
>
>
>     from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the
> 1.2 bridge.
>      new 97f3153  Replace internal use of synchronized java.util.Stack
> with unsynchronized java.util.Deque. These objects are not shared between
> threads.
>      new 97f9201  Replace internal use of synchronized java.util.Stack
> with unsynchronized java.util.Deque. These objects are not shared between
> threads.
>
> The 2 revisions listed above as "new" are entirely new to this
> repository and will be described in separate emails.  The revisions
> listed as "add" were already present in the repository and have only
> been added to this reference.
>
>
> Summary of changes:
> log4j-api/revapi.json                                        |  1 +
> .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
> .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
> .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
> .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12
> ++++++++----
> .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
> .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12
> ++++++------
> .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
> 8 files changed, 32 insertions(+), 25 deletions(-)
>
>
>

Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Carter Kozak <ck...@ckozak.net>.
I couldn't understand why one of the two tests I added in this PR failed, and root caused it to the linked change:
https://github.com/apache/logging-log4j2/pull/713

On Mon, Jan 17, 2022, at 16:28, Volkan Yazıcı wrote:
> Carter, how did you manage to promptly spot the glitch? I suppose you don't
> have a custom CI pipeline of yours.
> 
> On Mon, Jan 17, 2022 at 7:51 PM Carter Kozak <ck...@ckozak.net> wrote:
> 
> > Please revert, this breaks stacklocatorutil on java 9+ with the following:
> >
> > Caused by: java.lang.NoSuchMethodError: 'java.util.Deque
> > org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
> > at
> > org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
> > at
> > org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
> > at
> > org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
> > at
> > org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
> > at
> > org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
> > at
> > org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
> > at
> > org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
> > at
> > org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
> > at
> > org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
> > ... 50 more
> >
> > -ck
> >
> > On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
> > > This is an automated email from the ASF dual-hosted git repository.
> > >
> > > ggregory pushed a change to branch release-2.x
> > > in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
> > >
> > >
> > >     from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the
> > 1.2 bridge.
> > >      new 97f3153  Replace internal use of synchronized java.util.Stack
> > with unsynchronized java.util.Deque. These objects are not shared between
> > threads.
> > >      new 97f9201  Replace internal use of synchronized java.util.Stack
> > with unsynchronized java.util.Deque. These objects are not shared between
> > threads.
> > >
> > > The 2 revisions listed above as "new" are entirely new to this
> > > repository and will be described in separate emails.  The revisions
> > > listed as "add" were already present in the repository and have only
> > > been added to this reference.
> > >
> > >
> > > Summary of changes:
> > > log4j-api/revapi.json                                        |  1 +
> > > .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8
> > ++++----
> > > .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
> > > .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
> > > .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12
> > ++++++++----
> > > .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
> > > .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12
> > ++++++------
> > > .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
> > > 8 files changed, 32 insertions(+), 25 deletions(-)
> > >
> >
> 

-ck

Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Volkan Yazıcı <vo...@yazi.ci>.
Carter, how did you manage to promptly spot the glitch? I suppose you don't
have a custom CI pipeline of yours.

On Mon, Jan 17, 2022 at 7:51 PM Carter Kozak <ck...@ckozak.net> wrote:

> Please revert, this breaks stacklocatorutil on java 9+ with the following:
>
> Caused by: java.lang.NoSuchMethodError: 'java.util.Deque
> org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
> at
> org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
> at
> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
> at
> org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
> at
> org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
> at
> org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
> at
> org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
> at
> org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
> at
> org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
> at
> org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
> ... 50 more
>
> -ck
>
> On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
> > This is an automated email from the ASF dual-hosted git repository.
> >
> > ggregory pushed a change to branch release-2.x
> > in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
> >
> >
> >     from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the
> 1.2 bridge.
> >      new 97f3153  Replace internal use of synchronized java.util.Stack
> with unsynchronized java.util.Deque. These objects are not shared between
> threads.
> >      new 97f9201  Replace internal use of synchronized java.util.Stack
> with unsynchronized java.util.Deque. These objects are not shared between
> threads.
> >
> > The 2 revisions listed above as "new" are entirely new to this
> > repository and will be described in separate emails.  The revisions
> > listed as "add" were already present in the repository and have only
> > been added to this reference.
> >
> >
> > Summary of changes:
> > log4j-api/revapi.json                                        |  1 +
> > .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8
> ++++----
> > .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
> > .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
> > .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12
> ++++++++----
> > .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
> > .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12
> ++++++------
> > .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
> > 8 files changed, 32 insertions(+), 25 deletions(-)
> >
>

Re: [logging-log4j2] branch release-2.x updated (ff33bbc -> 97f9201)

Posted by Carter Kozak <ck...@ckozak.net>.
Please revert, this breaks stacklocatorutil on java 9+ with the following:

Caused by: java.lang.NoSuchMethodError: 'java.util.Deque org.apache.logging.log4j.util.StackLocator.getCurrentStackTrace()'
at org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace(StackLocatorUtil.java:116)
at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:111)
at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:96)
at org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
at org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy.<init>(Log4jLogEvent.java:970)
at org.apache.logging.log4j.core.impl.Log4jLogEvent.serialize(Log4jLogEvent.java:745)
at org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento(MutableLogEvent.java:472)
at org.apache.logging.log4j.test.appender.ListAppender.append(ListAppender.java:122)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
... 50 more

-ck

On Sat, Jan 8, 2022, at 11:08, ggregory@apache.org wrote:
> This is an automated email from the ASF dual-hosted git repository.
> 
> ggregory pushed a change to branch release-2.x
> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
> 
> 
>     from ff33bbc  Add StackLocatorUtil.getCallerClassLoader(int) for the 1.2 bridge.
>      new 97f3153  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.
>      new 97f9201  Replace internal use of synchronized java.util.Stack with unsynchronized java.util.Deque. These objects are not shared between threads.
> 
> The 2 revisions listed above as "new" are entirely new to this
> repository and will be described in separate emails.  The revisions
> listed as "add" were already present in the repository and have only
> been added to this reference.
> 
> 
> Summary of changes:
> log4j-api/revapi.json                                        |  1 +
> .../log4j/util/PrivateSecurityManagerStackTraceUtil.java     |  8 ++++----
> .../java/org/apache/logging/log4j/util/StackLocator.java     |  7 ++++---
> .../java/org/apache/logging/log4j/util/StackLocatorUtil.java |  4 ++--
> .../org/apache/logging/log4j/util/StackLocatorUtilTest.java  | 12 ++++++++----
> .../org/apache/logging/log4j/core/impl/ThrowableProxy.java   |  6 +++---
> .../apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 12 ++++++------
> .../apache/logging/log4j/core/impl/ThrowableProxyTest.java   |  7 ++++---
> 8 files changed, 32 insertions(+), 25 deletions(-)
>