Fix 1. of https://issues.apache.org/bugzilla/show_bug.cgi?id=48831#c3
authorkkolinko <kkolinko@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 4 Mar 2010 08:05:36 +0000 (08:05 +0000)
committerkkolinko <kkolinko@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 4 Mar 2010 08:05:36 +0000 (08:05 +0000)
Ignore the reset() call from java.util.logging.LogManager.Cleaner,
because we have our own shutdown hook that will take care.

There are three hooks that run at VM shutdown:
1. j.u.l.LogManager.Cleaner
2. o.a.j.ClassLoaderLogManager.Cleaner
3. o.a.c.startup.Catalina.CatalinaShutdownHook
2. vs. 3. was taken care by r910974 and r918594. This takes care of 1. vs. (2.,3.)

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@918885 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/juli/ClassLoaderLogManager.java

index 576fb38..1fdce3b 100644 (file)
@@ -302,8 +302,14 @@ public class ClassLoaderLogManager extends LogManager {
 
     @Override
     public void reset() throws SecurityException {
-        ClassLoader classLoader = Thread.currentThread()
-                .getContextClassLoader();
+        Thread thread = Thread.currentThread();
+        if (thread.getClass().getName().startsWith(
+                "java.util.logging.LogManager$")) {
+            // Ignore the call from java.util.logging.LogManager.Cleaner,
+            // because we have our own shutdown hook
+            return;
+        }
+        ClassLoader classLoader = thread.getContextClassLoader();
         ClassLoaderLogInfo clLogInfo = getClassLoaderInfo(classLoader);
         resetLoggers(clLogInfo);
         super.reset();