incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cziege...@apache.org
Subject svn commit: r723362 - in /incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl: JobEventHandler.java TimedJobHandler.java
Date Thu, 04 Dec 2008 15:48:00 GMT
Author: cziegeler
Date: Thu Dec  4 07:48:00 2008
New Revision: 723362

URL: http://svn.apache.org/viewvc?rev=723362&view=rev
Log:
SLING-759 Avoid synching on jcr sessions. Use extra lock objects for this.

Modified:
    incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java
    incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/TimedJobHandler.java

Modified: incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java?rev=723362&r1=723361&r2=723362&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java
(original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java
Thu Dec  4 07:48:00 2008
@@ -140,6 +140,12 @@
 
     public static ThreadPool JOB_THREAD_POOL;
 
+    /** Sync lock */
+    private final Object writeLock = new Object();
+
+    /** Sync lock */
+    private final Object backgroundLock = new Object();
+
     /**
      * Activate this component.
      * @param context
@@ -546,7 +552,7 @@
      */
     private boolean executeJob(final EventInfo info, final BlockingQueue<EventInfo>
jobQueue) {
         boolean putback = false;
-        synchronized (this.backgroundSession) {
+        synchronized (this.backgroundLock) {
             try {
                 this.backgroundSession.refresh(false);
                 // check if the node still exists
@@ -1029,7 +1035,7 @@
                                         || job.getProperty(EventUtil.PROPERTY_JOB_PARALLEL)
!= null;
         EventInfo putback = null;
         // we have to use the same session for unlocking that we used for locking!
-        synchronized ( this.backgroundSession ) {
+        synchronized ( this.backgroundLock ) {
             try {
                 this.backgroundSession.refresh(false);
                 // check if the job has been cancelled
@@ -1334,7 +1340,7 @@
      */
     public void cancelJob(String jobId) {
         if ( jobId != null ) {
-            synchronized ( this.writerSession ) {
+            synchronized ( this.writeLock ) {
                 try {
                     this.writerSession.refresh(false);
                 } catch (RepositoryException e) {

Modified: incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/TimedJobHandler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/TimedJobHandler.java?rev=723362&r1=723361&r2=723362&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/TimedJobHandler.java
(original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/TimedJobHandler.java
Thu Dec  4 07:48:00 2008
@@ -80,6 +80,9 @@
     /** Unloaded events. */
     protected Set<String>unloadedEvents = new HashSet<String>();
 
+    /** Sync lock */
+    private final Object writeLock = new Object();
+
     /**
      * @see org.apache.sling.event.impl.AbstractRepositoryEventHandler#startWriterSession()
      */
@@ -116,7 +119,7 @@
 
                     // write event and update path
                     // if something went wrong we get the node path and reschedule
-                    synchronized ( this.writerSession ) {
+                    synchronized ( this.writeLock ) {
                         info.nodePath = this.persistEvent(info.event, scheduleInfo);
                     }
                     if ( info.nodePath != null ) {
@@ -146,7 +149,7 @@
                 this.ignoreException(e);
             }
             if ( info != null && this.running ) {
-                synchronized ( this.writerSession ) {
+                synchronized ( this.writeLock ) {
                     ScheduleInfo scheduleInfo = null;
                     try {
                         scheduleInfo = new ScheduleInfo(info.event);
@@ -743,7 +746,7 @@
      * @see org.apache.sling.event.TimedEventStatusProvider#cancelTimedEvent(java.lang.String)
      */
     public void cancelTimedEvent(String jobId) {
-        synchronized ( this.writerSession ) {
+        synchronized ( this.writeLock ) {
             try {
                 // is there a node?
                 final Item foundNode = this.writerSession.itemExists(jobId) ? this.writerSession.getItem(jobId)
: null;



Mime
View raw message