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 2010/12/13 18:32:29 UTC

svn commit: r1045248 - in /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs: DefaultJobManager.java queues/AbstractJobQueue.java

Author: cziegeler
Date: Mon Dec 13 17:32:29 2010
New Revision: 1045248

URL: http://svn.apache.org/viewvc?rev=1045248&view=rev
Log:
Shorten clean up interval for queues

Modified:
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/DefaultJobManager.java
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/AbstractJobQueue.java

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/DefaultJobManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/DefaultJobManager.java?rev=1045248&r1=1045247&r2=1045248&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/DefaultJobManager.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/DefaultJobManager.java Mon Dec 13 17:32:29 2010
@@ -80,9 +80,7 @@ import org.slf4j.LoggerFactory;
     @Service(value=EventHandler.class)
 })
 @Properties({
-    @Property(name="scheduler.period", longValue=300,
-            label="%jobscheduler.period.name",
-            description="%jobscheduler.period.description"),
+    @Property(name="scheduler.period", longValue=60, propertyPrivate=true),
     @Property(name="scheduler.concurrent", boolValue=false, propertyPrivate=true),
     @Property(name=ConfigurationConstants.PROP_PRIORITY,
             value=ConfigurationConstants.DEFAULT_PRIORITY,
@@ -148,6 +146,9 @@ public class DefaultJobManager
 
     private boolean enabled = DEFAULT_ENABLED;
 
+    /** We count the scheduler runs. */
+    private long schedulerRuns;
+
     /**
      * Activate this component.
      * @param props Configuration properties
@@ -212,6 +213,10 @@ public class DefaultJobManager
      * @see java.lang.Runnable#run()
      */
     private void cleanup() {
+        this.schedulerRuns++;
+        // we only do a full clean up on every fifth run
+        final boolean doFullCleanUp = (schedulerRuns % 5 == 0);
+
         // check for idle queue
         // we synchronize to avoid creating a queue which is about to be removed during cleanup
         synchronized ( queuesLock ) {
@@ -220,17 +225,19 @@ public class DefaultJobManager
                 final Map.Entry<String, AbstractJobQueue> current = i.next();
                 // clean up
                 final AbstractJobQueue jbq = current.getValue();
-                jbq.cleanUp();
-                if ( jbq.isMarkedForRemoval() ) {
-                    // close
-                    jbq.close();
-                    // copy statistics
-                    this.baseStatistics.add(jbq);
-                    // remove
-                    i.remove();
-                } else {
-                    // mark to be removed during next cycle
-                    jbq.markForRemoval();
+                jbq.checkForUnprocessedJobs();
+                if ( doFullCleanUp ) {
+                    if ( jbq.isMarkedForRemoval() ) {
+                        // close
+                        jbq.close();
+                        // copy statistics
+                        this.baseStatistics.add(jbq);
+                        // remove
+                        i.remove();
+                    } else {
+                        // mark to be removed during next cycle
+                        jbq.markForRemoval();
+                    }
                 }
             }
         }

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/AbstractJobQueue.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/AbstractJobQueue.java?rev=1045248&r1=1045247&r2=1045248&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/AbstractJobQueue.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/AbstractJobQueue.java Mon Dec 13 17:32:29 2010
@@ -178,9 +178,9 @@ public abstract class AbstractJobQueue
     }
 
     /**
-     * Periodically cleanup.
+     * Periodically check for started jobs without an ack.
      */
-    public void cleanUp() {
+    public void checkForUnprocessedJobs() {
         if ( this.running ) {
             // check for jobs that were started but never got an aknowledge
             final long tooOld = System.currentTimeMillis() - DEFAULT_WAIT_FOR_ACK_IN_MS;