Author: mduerig
Date: Tue Nov 26 11:57:40 2013
New Revision: 1545627

URL: http://svn.apache.org/r1545627
Log:
OAK-1176: ObservationTest#observationDispose fails every now and then
applied patch. Credits to Angela for reviewing

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.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=1545627&r1=1545626&r2=1545627&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
 Tue Nov 26 11:57:40 2013
@@ -72,6 +72,7 @@ public class ChangeProcessor implements 
     private Closeable observer;
     private Registration mbean;
     private NodeState previousRoot;
+    private boolean stopping;
 
     public ChangeProcessor(
             ContentSession contentSession,
@@ -117,6 +118,7 @@ public class ChangeProcessor implements 
     public synchronized void stop() {
         checkState(observer != null, "Change processor not started");
         try {
+            stopping = true;
             mbean.unregister();
             observer.close();
         } catch (IOException e) {
@@ -140,7 +142,11 @@ public class ChangeProcessor implements 
                             provider.getFilter(beforeTree, afterTree, 
treePermission),
                             new JcrListener(beforeTree, afterTree, 
namePathMapper, info));
                     if (events.hasNext()) {
-                        eventListener.onEvent(new 
EventIteratorAdapter(events));
+                        synchronized (this) {
+                            if (!stopping) {
+                                eventListener.onEvent(new 
EventIteratorAdapter(events));
+                            }
+                        }
                     }
                 }
             } catch (Exception e) {


Reply via email to