You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2014/10/17 12:25:48 UTC

svn commit: r1632528 - in /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs: JobTopicTraverser.java MaintenanceTask.java

Author: cziegeler
Date: Fri Oct 17 10:25:48 2014
New Revision: 1632528

URL: http://svn.apache.org/r1632528
Log:
SLING-4048 : Avoid keeping jobs in memory.  Prevent from being hit by SLING-4073

Modified:
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobTopicTraverser.java
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobTopicTraverser.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobTopicTraverser.java?rev=1632528&r1=1632527&r2=1632528&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobTopicTraverser.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobTopicTraverser.java Fri Oct 17 10:25:48 2014
@@ -142,7 +142,15 @@ public class JobTopicTraverser {
                             // now jobs
                             final List<JobImpl> jobs = new ArrayList<JobImpl>();
                             // we use an iterator to skip removed entries
-                            final Iterator<Resource> jobIter = minuteResource.listChildren();
+                            // see SLING-4073
+                            Iterator<Resource> jobIter = null;
+                            do {
+                                try {
+                                    jobIter = minuteResource.listChildren();
+                                } catch ( final IllegalStateException ise) {
+                                    // ignore
+                                }
+                            } while ( jobIter == null );
                             while ( jobIter.hasNext() ) {
                                 try {
                                     final Resource jobResource = jobIter.next();

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java?rev=1632528&r1=1632527&r2=1632528&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java Fri Oct 17 10:25:48 2014
@@ -157,8 +157,8 @@ public class MaintenanceTask {
     }
 
     /**
-     * Simple empty folder removes empty folders for the last five minutes
-     * from an hour ago!
+     * Simple empty folder removes empty folders for the last ten minutes
+     * starting five minutes ago.
      * If folder for minute 59 is removed, we check the hour folder as well.
      */
     private void simpleEmptyFolderCleanup(final TopologyCapabilities caps, final String basePath) {
@@ -166,8 +166,8 @@ public class MaintenanceTask {
         final ResourceResolver resolver = this.configuration.createResourceResolver();
         try {
             final Calendar cleanUpDate = Calendar.getInstance();
-            // go back ten minutes
-            cleanUpDate.add(Calendar.HOUR, -1);
+            // go back five minutes
+            cleanUpDate.add(Calendar.MINUTE, -5);
 
             final Resource baseResource = resolver.getResource(basePath);
             // sanity check - should never be null
@@ -176,7 +176,7 @@ public class MaintenanceTask {
                 while ( caps.isActive() && topicIter.hasNext() ) {
                     final Resource topicResource = topicIter.next();
 
-                    for(int i = 0; i < 5; i++) {
+                    for(int i = 0; i < 10; i++) {
                         if ( caps.isActive() ) {
                             final StringBuilder sb = new StringBuilder(topicResource.getPath());
                             sb.append('/');
@@ -187,6 +187,8 @@ public class MaintenanceTask {
                             sb.append(cleanUpDate.get(Calendar.DAY_OF_MONTH));
                             sb.append('/');
                             sb.append(cleanUpDate.get(Calendar.HOUR_OF_DAY));
+                            sb.append('/');
+                            sb.append(cleanUpDate.get(Calendar.MINUTE));
                             final String path = sb.toString();
 
                             final Resource dateResource = resolver.getResource(path);
@@ -203,6 +205,7 @@ public class MaintenanceTask {
                                     resolver.commit();
                                 }
                             }
+                            // go back another minute in time
                             cleanUpDate.add(Calendar.MINUTE, -1);
                         }
                     }