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) {