Author: mduerig
Date: Tue Mar 18 12:43:10 2014
New Revision: 1578849
URL: http://svn.apache.org/r1578849
Log:
OAK-1562: BackgroundObserver not closed in ChangeProcessor
Use a Registration instance for closing the BackgroundObserver associated with
a listener
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java?rev=1578849&r1=1578848&r2=1578849&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java
Tue Mar 18 12:43:10 2014
@@ -127,16 +127,23 @@ class ChangeProcessor implements Observe
checkState(registration == null, "Change processor started already");
final WhiteboardExecutor executor = new WhiteboardExecutor();
executor.start(whiteboard);
+ final BackgroundObserver observer = createObserver(executor);
registration = new CompositeRegistration(
- registerObserver(whiteboard, createObserver(executor)),
+ registerObserver(whiteboard, observer),
registerMBean(whiteboard, EventListenerMBean.class,
tracker.getListenerMBean(), "EventListener",
tracker.toString()),
new Registration() {
- @Override
- public void unregister() {
- executor.stop();
- }
- });
+ @Override
+ public void unregister() {
+ observer.close();
+ }
+ },
+ new Registration() {
+ @Override
+ public void unregister() {
+ executor.stop();
+ }
+ });
}
private BackgroundObserver createObserver(final WhiteboardExecutor
executor) {