You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2013/12/16 12:15:00 UTC

svn commit: r1551176 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java

Author: mduerig
Date: Mon Dec 16 11:14:59 2013
New Revision: 1551176

URL: http://svn.apache.org/r1551176
Log:
OAK-1290: ObservationManager#removeEventListener prone to deadlocks
Remove synchronisation to prevent deadlocks until we have consensus on how to solve this

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java?rev=1551176&r1=1551175&r2=1551176&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java Mon Dec 16 11:14:59 2013
@@ -112,6 +112,7 @@ public class ChangeProcessor implements 
     /**
      * Stop this change processor if running. After returning from this methods no further
      * events will be delivered.
+     * FIXME relax this contract. See OAK-1290
      * @throws IllegalStateException if not yet started or stopped already
      */
     public synchronized void stop() {
@@ -138,10 +139,8 @@ public class ChangeProcessor implements 
                             Filters.all(userFilter, acFilter),
                             new JcrListener(beforeTree, afterTree, namePathMapper, info));
                     if (events.hasNext()) {
-                        synchronized (this) {
-                            if (!stopping) {
-                                eventListener.onEvent(new EventIteratorAdapter(events));
-                            }
+                        if (!stopping) {
+                            eventListener.onEvent(new EventIteratorAdapter(events));
                         }
                     }
                 }

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java?rev=1551176&r1=1551175&r2=1551176&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java Mon Dec 16 11:14:59 2013
@@ -63,6 +63,7 @@ import org.apache.jackrabbit.oak.jcr.Abs
 import org.apache.jackrabbit.oak.jcr.NodeStoreFixture;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class ObservationTest extends AbstractRepositoryTest {
@@ -344,6 +345,7 @@ public class ObservationTest extends Abs
     }
 
     @Test
+    @Ignore("OAK-1290")  // FIXME update expectations according to OAK-1290
     public void observationDispose()
             throws RepositoryException, InterruptedException, ExecutionException, TimeoutException {