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 2012/11/12 02:27:01 UTC
svn commit: r1408166 - in /tomcat/tc7.0.x/trunk: ./
java/org/apache/catalina/startup/ java/org/apache/catalina/util/
webapps/docs/
Author: markt
Date: Mon Nov 12 01:26:59 2012
New Revision: 1408166
URL: http://svn.apache.org/viewvc?rev=1408166&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54007
Fix memory leak that prevents context.xml files associated with failed deployments from being deleted.
Fix errors uncovered once the above issue was resolved.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/FailedContext.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/HostConfig.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/util/LifecycleBase.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1408163-1408165
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1408166&r1=1408165&r2=1408166&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java Mon Nov 12 01:26:59 2012
@@ -1094,9 +1094,12 @@ public class ContextConfig implements Li
}
// Changed to getWorkPath per Bugzilla 35819.
- String workDir = ((StandardContext) context).getWorkPath();
- if (workDir != null)
- ExpandWar.delete(new File(workDir));
+ if (context instanceof StandardContext) {
+ String workDir = ((StandardContext) context).getWorkPath();
+ if (workDir != null) {
+ ExpandWar.delete(new File(workDir));
+ }
+ }
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/FailedContext.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/FailedContext.java?rev=1408166&r1=1408165&r2=1408166&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/FailedContext.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/FailedContext.java Mon Nov 12 01:26:59 2012
@@ -181,6 +181,10 @@ public class FailedContext extends Lifec
@Override
public void removeChild(Container child) { /* NO-OP */ }
+ @Override
+ public String toString() {
+ return getName();
+ }
// -------------------------------------------- All NO-OPs beyond this point
@Override
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/HostConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/HostConfig.java?rev=1408166&r1=1408165&r2=1408166&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/HostConfig.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/HostConfig.java Mon Nov 12 01:26:59 2012
@@ -603,10 +603,12 @@ public class HostConfig
boolean isExternalWar = false;
boolean isExternal = false;
File expandedDocBase = null;
+ FileInputStream fis = null;
try {
+ fis = new FileInputStream(contextXml);
synchronized (digester) {
try {
- context = (Context) digester.parse(contextXml);
+ context = (Context) digester.parse(fis);
} catch (Exception e) {
log.error(sm.getString(
"hostConfig.deployDescriptor.error",
@@ -658,6 +660,13 @@ public class HostConfig
log.error(sm.getString("hostConfig.deployDescriptor.error",
contextXml.getAbsolutePath()), t);
} finally {
+ if (fis != null) {
+ try {
+ fis.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
// Get paths for WAR and expanded WAR in appBase
// default to appBase dir + name
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/util/LifecycleBase.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/util/LifecycleBase.java?rev=1408166&r1=1408165&r2=1408166&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/util/LifecycleBase.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/util/LifecycleBase.java Mon Nov 12 01:26:59 2012
@@ -242,7 +242,7 @@ public abstract class LifecycleBase impl
setStateInternal(LifecycleState.STOPPED, null, false);
destroy();
- } else {
+ } else if (!state.equals(LifecycleState.FAILED)){
// Shouldn't be necessary but acts as a check that sub-classes are
// doing what they are supposed to.
if (!state.equals(LifecycleState.STOPPING)) {
@@ -272,7 +272,8 @@ public abstract class LifecycleBase impl
stop();
} catch (LifecycleException e) {
// Just log. Still want to destroy.
- log.warn(sm.getString("lifecycleBase.destroyStopFail"), e);
+ log.warn(sm.getString(
+ "lifecycleBase.destroyStopFail", toString()), e);
}
}
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1408166&r1=1408165&r2=1408166&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Nov 12 01:26:59 2012
@@ -73,6 +73,12 @@
Apache web server. (markt)
</add>
<fix>
+ <bug>54007</bug>: Fix a memory leak that prevented deletion of a
+ context.xml file associated with a Context that had failed to deploy.
+ Also fix the problems uncovered with undeploying such a Context once the
+ leak had been fixed and the file could be deleted. (markt)
+ </fix>
+ <fix>
<bug>54044</bug>: Correct bug in timestamp cache used by logging
(including the access log valve) that meant entries could be made with
an earlier timestamp than the true timestamp. (markt)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org