Author: markt
Date: Fri Jan 19 20:45:54 2018
New Revision: 1821708

URL: http://svn.apache.org/viewvc?rev=1821708&view=rev
Log:
Prevent a stack trace being written to standard out when running on Java 10 due 
to changes in the LogManager implementation.

Modified:
    tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java?rev=1821708&r1=1821707&r2=1821708&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java (original)
+++ tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java Fri Jan 19 
20:45:54 2018
@@ -53,6 +53,13 @@ public class ClassLoaderLogManager exten
 
     private static final boolean isJava9;
 
+    private static ThreadLocal<Boolean> addingLocalRootLogger = new 
ThreadLocal<Boolean>() {
+        @Override
+        protected Boolean initialValue() {
+            return Boolean.FALSE;
+        }
+    };
+
     public static final String DEBUG_PROPERTY =
             ClassLoaderLogManager.class.getName() + ".debug";
 
@@ -264,6 +271,13 @@ public class ClassLoaderLogManager exten
      */
     @Override
     public String getProperty(String name) {
+
+        // Use a ThreadLocal to work around
+        // https://bugs.openjdk.java.net/browse/JDK-8195096
+        if (".handlers".equals(name) && 
!addingLocalRootLogger.get().booleanValue()) {
+            return null;
+        }
+
         String prefix = this.prefix.get();
         String result = null;
 
@@ -523,8 +537,14 @@ public class ClassLoaderLogManager exten
         if (is != null) {
             readConfiguration(is, classLoader);
         }
-        addLogger(localRootLogger);
-
+        try {
+            // Use a ThreadLocal to work around
+            // https://bugs.openjdk.java.net/browse/JDK-8195096
+            addingLocalRootLogger.set(Boolean.TRUE);
+            addLogger(localRootLogger);
+        } finally {
+            addingLocalRootLogger.set(Boolean.FALSE);
+        }
     }
 
 

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1821708&r1=1821707&r2=1821708&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Fri Jan 19 20:45:54 2018
@@ -45,6 +45,14 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 9.0.5 (markt)" rtext="in development">
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Prevent a stack trace being written to standard out when running on 
Java
+        10 due to changes in the <code>LogManager</code> implementation. 
(markt)
+      </fix>
+    </changelog>
+  </subsection>
 </section>
 <section name="Tomcat 9.0.4 (markt)" rtext="release in progress">
   <subsection name="Catalina">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to