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 2011/05/03 18:23:13 UTC

svn commit: r1099114 - in /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs: DefaultJobManager.java jcr/PersistenceHandler.java

Author: cziegeler
Date: Tue May  3 16:23:13 2011
New Revision: 1099114

URL: http://svn.apache.org/viewvc?rev=1099114&view=rev
Log:
SLING-2071 : Job is not locked and can be removed if locking manager is configured with "none"

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/jcr/PersistenceHandler.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=1099114&r1=1099113&r2=1099114&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 Tue May  3 16:23:13 2011
@@ -459,6 +459,19 @@ public class DefaultJobManager
     }
 
     /**
+     * Job started
+     */
+    public void notifyRescheduleJob(final String key) {
+        final JobEvent job;
+        synchronized ( this.allEvents ) {
+            job = this.allEvents.get(key);
+        }
+        if ( job != null ) {
+            job.started = -1;
+        }
+    }
+
+    /**
      * Check the requested job type
      */
     private boolean checkType(final QueryType type, final JobEvent event) {
@@ -651,7 +664,11 @@ public class DefaultJobManager
         }
         boolean result = true;
         if ( job != null ) {
-            result = job.remove();
+            if ( job.started != 1 ) {
+                result = job.remove();
+            } else {
+                result = false;
+            }
         }
         return result;
     }
@@ -763,6 +780,10 @@ public class DefaultJobManager
         final List<JobEvent> jobs;
         synchronized ( this.allEvents ) {
             jobs = new ArrayList<JobEvent>(this.allEvents.values());
+            this.allEvents.clear();
+        }
+        synchronized ( this.allEventsByTopic ) {
+            this.allEventsByTopic.clear();
         }
         for(final JobEvent job : jobs) {
             job.restart();

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/PersistenceHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/PersistenceHandler.java?rev=1099114&r1=1099113&r2=1099114&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/PersistenceHandler.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/PersistenceHandler.java Tue May  3 16:23:13 2011
@@ -1210,6 +1210,7 @@ public class PersistenceHandler implemen
 
                     // and unlock
                     this.lockManager.unlock(this.backgroundSession, path);
+                    ((DefaultJobManager)this.jobManager).notifyRescheduleJob(info.uniqueId);
                     return true;
                 }
             } catch (RepositoryException re) {