You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2010/01/14 11:12:26 UTC
svn commit: r899141 - in /tomcat/tc6.0.x/trunk: STATUS.txt
java/org/apache/juli/ClassLoaderLogManager.java
java/org/apache/juli/logging/LogFactory.java webapps/docs/changelog.xml
Author: markt
Date: Thu Jan 14 10:12:25 2010
New Revision: 899141
URL: http://svn.apache.org/viewvc?rev=899141&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48421
Prevent file descriptor and possible memory leak. Allow a web application's logs to be deleted once the application has been stopped.
Modified:
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java
tomcat/tc6.0.x/trunk/java/org/apache/juli/logging/LogFactory.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=899141&r1=899140&r2=899141&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Thu Jan 14 10:12:25 2010
@@ -124,20 +124,6 @@
+1: markt, jim, yoavs
-1:
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48421
- Prevent file descriptor leak. Allow a web application's logs to be deleted
- once the application has been stopped.
- I haven't figured out why, but this also prevents buffered log messages being
- lost on stop when running as a service.
- http://svn.apache.org/viewvc?rev=898468&view=rev
- +1: markt, yoavs, kkolinko
- -1:
- kkolinko: OK, understood. This patch is needed because you cannot
- overwrite LogManager.reset() to clean all loggers, because in most cases
- reset() is called without intention to clean everything: either
- called explicitly, or from ClassLoaderLogManager.readConfiguration().
-
-
* Cleanup and well define log buffering behavior
http://svn.apache.org/viewvc?rev=898836&view=rev
+1: fhanik, kkolinko
Modified: tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java?rev=899141&r1=899140&r2=899141&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java Thu Jan 14 10:12:25 2010
@@ -46,6 +46,46 @@
*/
public class ClassLoaderLogManager extends LogManager {
+ private final class Cleaner extends Thread {
+
+ @Override
+ public void run() {
+ // The JVM us being shutdown. Make sure all loggers for all class
+ // loaders are shutdown
+ for (ClassLoaderLogInfo clLogInfo : classLoaderLoggers.values()) {
+ for (Logger logger : clLogInfo.loggers.values()) {
+ resetLogger(logger);
+ }
+ }
+ }
+
+ private void resetLogger(Logger logger) {
+
+ Handler[] handlers = logger.getHandlers();
+ for (Handler handler : handlers) {
+ logger.removeHandler(handler);
+ try {
+ handler.close();
+ } catch (Exception e) {
+ // Ignore
+ }
+ }
+ }
+
+ }
+
+
+ // ------------------------------------------------------------Constructors
+
+ public ClassLoaderLogManager() {
+ super();
+ try {
+ Runtime.getRuntime().addShutdownHook(new Cleaner());
+ } catch (IllegalStateException ise) {
+ // We are probably already being shutdown. Ignore this error.
+ }
+ }
+
// -------------------------------------------------------------- Variables
@@ -482,33 +522,6 @@
}
- /**
- * Need to override reset so the loggers loaded by the web applications can
- * be shutdown.
- */
- @Override
- public void reset() {
- super.reset();
- for (ClassLoaderLogInfo classLoaderLogInfo : classLoaderLoggers.values()) {
- for (Logger logger : classLoaderLogInfo.loggers.values()) {
- resetLogger(logger);
- }
- }
- }
-
- private void resetLogger(Logger logger) {
-
- Handler[] handlers = logger.getHandlers();
- for (Handler handler : handlers) {
- logger.removeHandler(handler);
- try {
- handler.close();
- } catch (Exception e) {
- // Ignore
- }
- }
- }
-
// ---------------------------------------------------- LogNode Inner Class
Modified: tomcat/tc6.0.x/trunk/java/org/apache/juli/logging/LogFactory.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/juli/logging/LogFactory.java?rev=899141&r1=899140&r2=899141&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/juli/logging/LogFactory.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/juli/logging/LogFactory.java Thu Jan 14 10:12:25 2010
@@ -19,6 +19,7 @@
import java.util.Properties;
+import java.util.logging.LogManager;
@@ -325,8 +326,10 @@
*
* @param classLoader ClassLoader for which to release the LogFactory
*/
- public static void release(ClassLoader classLoader) {
- // nothing - we don't use any class loaders
+ public static void release(
+ @SuppressWarnings("unused") ClassLoader classLoader) {
+ // JULI's log manager looks at the current classLoader
+ LogManager.getLogManager().reset();
}
Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=899141&r1=899140&r2=899141&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Thu Jan 14 10:12:25 2010
@@ -58,6 +58,12 @@
Warnier. (markt/kkolinko)
</fix>
<fix>
+ <bug>48421</bug>: Fix file descriptor and potential memory leak when a
+ web application uses a local logging.properties file. Allow a web
+ applciation's log files to be deleted once the web application has been
+ stopped. (markt)
+ </fix>
+ <fix>
<bug>48454</bug>: Ensure stderr is completely read before terminating
the CGI process. Patch provided by Markus Grieder. (markt)
</fix>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org