From 79c1e1b577b8f24cc77538e34f80107c6524d518 Mon Sep 17 00:00:00 2001
From: Robert Munteanu <rombert@apache.org>
Date: Thu, 8 Dec 2016 15:22:30 +0200
Subject: [PATCH] OAK-5254 - MultiplexingNodeStoreService does not pick up
 Observers registered through the whiteboard

---
 .../plugins/multiplex/MultiplexingNodeStoreService.java    | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java
index 478ccff..358fe10 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java
@@ -24,6 +24,7 @@ import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.jackrabbit.oak.commons.PropertiesUtil;
+import org.apache.jackrabbit.oak.osgi.ObserverTracker;
 import org.apache.jackrabbit.oak.spi.mount.Mount;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -67,6 +68,8 @@ public class MultiplexingNodeStoreService {
 
     private ServiceRegistration nsReg;
 
+    private ObserverTracker observerTracker;
+
     @Activate
     protected void activate(ComponentContext context) {
         this.context = context;
@@ -76,6 +79,10 @@ public class MultiplexingNodeStoreService {
     @Deactivate
     protected void deactivate() {
         unregisterMultiplexingNodeStore();
+        if ( observerTracker != null ) {
+            observerTracker.stop();
+            observerTracker = null;
+        }
     }
 
     private void registerMultiplexingNodeStore() {
@@ -125,13 +132,18 @@ public class MultiplexingNodeStoreService {
         props.put(Constants.SERVICE_PID, MultiplexingNodeStore.class.getName());
         props.put("oak.nodestore.description", new String[] { "nodeStoreType=multiplexing" } );
 
+        MultiplexingNodeStore store = builder.build();
+
+        observerTracker = new ObserverTracker(store);
+        observerTracker.start(context.getBundleContext());
+
         LOG.info("Registering the multiplexing node store");
 
         nsReg = context.getBundleContext().registerService(
                 new String[]{
                         NodeStore.class.getName()
                 },
-                builder.build(),
+                store,
                 props);
     }
 
-- 
2.10.2

