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);
}
}