Author: markt Date: Thu Jan 29 09:28:07 2015 New Revision: 1655558 URL: http://svn.apache.org/r1655558 Log: Separate out the gc process from the background process so gc() can be called independently.
Modified: tomcat/trunk/java/org/apache/catalina/WebResourceRoot.java tomcat/trunk/java/org/apache/catalina/WebResourceSet.java tomcat/trunk/java/org/apache/catalina/core/StandardContext.java tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java Modified: tomcat/trunk/java/org/apache/catalina/WebResourceRoot.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/WebResourceRoot.java?rev=1655558&r1=1655557&r2=1655558&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/WebResourceRoot.java (original) +++ tomcat/trunk/java/org/apache/catalina/WebResourceRoot.java Thu Jan 29 09:28:07 2015 @@ -407,6 +407,12 @@ public interface WebResourceRoot extends */ List<URL> getBaseUrls(); + /** + * Implementations may cache some information to improve performance. This + * method triggers the clean-up of those resources. + */ + void gc(); + static enum ResourceSetType { PRE, RESOURCE_JAR, Modified: tomcat/trunk/java/org/apache/catalina/WebResourceSet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/WebResourceSet.java?rev=1655558&r1=1655557&r2=1655558&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/WebResourceSet.java (original) +++ tomcat/trunk/java/org/apache/catalina/WebResourceSet.java Thu Jan 29 09:28:07 2015 @@ -149,8 +149,8 @@ public interface WebResourceSet extends boolean isReadOnly(); /** - * Hook to allow the WebResourceRoot to trigger regular tasks on this set of - * resources. + * Implementations may cache some information to improve performance. This + * method triggers the clean-up of those resources. */ - void backgroundProcess(); + void gc(); } Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1655558&r1=1655557&r2=1655558&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Thu Jan 29 09:28:07 2015 @@ -5217,11 +5217,10 @@ public class StandardContext extends Con } // The WebResources implementation caches references to JAR files. On - // some platforms these references may lock the JAR files. The - // WebResources implementaion cleans-up unused JAR file references every - // run of background processing but since web application start is - // likely to have read from lots of JARs, trigger a clean-up now. - getResources().backgroundProcess(); + // some platforms these references may lock the JAR files. Since web + // application start is likely to have read from lots of JARs, trigger + // a clean-up now. + getResources().gc(); // Reinitializing if something went wrong if (!ok) { Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java?rev=1655558&r1=1655557&r2=1655558&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java (original) +++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java Thu Jan 29 09:28:07 2015 @@ -294,7 +294,7 @@ public abstract class AbstractArchiveRes } @Override - public void backgroundProcess() { + public void gc() { synchronized (archiveLock) { if (archive != null && archiveUseCount == 0) { try { Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java?rev=1655558&r1=1655557&r2=1655558&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java (original) +++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java Thu Jan 29 09:28:07 2015 @@ -132,7 +132,7 @@ public abstract class AbstractFileResour * This is a NO-OP by default for File based resource sets. */ @Override - public void backgroundProcess() { + public void gc() { // NO-OP } Modified: tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java?rev=1655558&r1=1655557&r2=1655558&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java (original) +++ tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java Thu Jan 29 09:28:07 2015 @@ -153,7 +153,7 @@ public class EmptyResourceSet extends Li } @Override - public void backgroundProcess() { + public void gc() { // NO-OP } Modified: tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java?rev=1655558&r1=1655557&r2=1655558&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java (original) +++ tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java Thu Jan 29 09:28:07 2015 @@ -595,14 +595,20 @@ public class StandardRoot extends Lifecy @Override public void backgroundProcess() { cache.backgroundProcess(); + gc(); + } + + + + @Override + public void gc() { for (List<WebResourceSet> list : allResources) { for (WebResourceSet webResourceSet : list) { - webResourceSet.backgroundProcess(); + webResourceSet.gc(); } } } - @Override public void registerTrackedResource(TrackedWebResource trackedResource) { trackedResources.add(trackedResource); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org