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


Reply via email to