Author: chetanm
Date: Fri Aug  7 11:00:58 2015
New Revision: 1694656

URL: http://svn.apache.org/r1694656
Log:
OAK-3196 - ConfigInstaller removing the configs on restart

Modified:
    
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigInstaller.java
    
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigTracker.java
    
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/ConfigTest.groovy

Modified: 
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigInstaller.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigInstaller.java?rev=1694656&r1=1694655&r2=1694656&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigInstaller.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigInstaller.java
 Fri Aug  7 11:00:58 2015
@@ -47,9 +47,8 @@ class ConfigInstaller {
         this.bundleContext = bundleContext;
     }
 
-    public Set<String> installConfigs(Map<String, Map<String, Object>> 
osgiConfig)
+    public void installConfigs(Map<String, Map<String, Object>> osgiConfig)
             throws Exception {
-        Set<String> processedPids = Sets.newHashSet();
         for (Map.Entry<String, Map<String, Object>> pidEntry : 
osgiConfig.entrySet()) {
             final String pidString = pidEntry.getKey();
 
@@ -80,10 +79,8 @@ class ConfigInstaller {
                     log.info("Updating configuration from {}", pidString);
                 }
                 config.update(current);
-                processedPids.add(pidString);
             }
         }
-        return processedPids;
     }
 
     public void removeConfigs(Set<String> pidsToBeRemoved) throws Exception {
@@ -94,7 +91,7 @@ class ConfigInstaller {
         }
 
         if (!pidsToBeRemoved.isEmpty()) {
-            log.info("Configuration belonging to following pids have been 
removed ", pidsToBeRemoved);
+            log.info("Configuration belonging to following pids have been 
removed {}", pidsToBeRemoved);
         }
     }
 

Modified: 
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigTracker.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigTracker.java?rev=1694656&r1=1694655&r2=1694656&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigTracker.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-pojosr/src/main/java/org/apache/jackrabbit/oak/run/osgi/ConfigTracker.java
 Fri Aug  7 11:00:58 2015
@@ -89,8 +89,12 @@ class ConfigTracker extends ServiceTrack
             configs.putAll(runtimeConfig);
         }
 
-        Set<String> processedPids = configInstaller.installConfigs(configs);
-        Set<String> pidsToBeRemoved = Sets.difference(existingPids, 
processedPids);
+        configInstaller.installConfigs(configs);
+        //Find out the config *installed by ConfigInstaller* and are not 
present in
+        //current config files. Such configs must be remove. Note it does not 
lead to
+        //removal of configs added by using ConfigAdmin directly, say using 
WebConsole
+        //ui
+        Set<String> pidsToBeRemoved = Sets.difference(existingPids, 
configs.keySet());
         configInstaller.removeConfigs(pidsToBeRemoved);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/ConfigTest.groovy
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/ConfigTest.groovy?rev=1694656&r1=1694655&r2=1694656&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/ConfigTest.groovy
 (original)
+++ 
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/ConfigTest.groovy
 Fri Aug  7 11:00:58 2015
@@ -84,7 +84,8 @@ class ConfigTest {
     void testConfigSync(){
         config[REPOSITORY_CONFIG] = [
                 foo : [a:'a', b:1],
-                bar : [a:'a1', b:2]
+                bar : [a:'a1', b:2],
+                foo2 : [a:'a2', b:2]
         ]
         initRegistry(config)
         Configuration c = cm.getConfiguration('baz')
@@ -93,16 +94,19 @@ class ConfigTest {
         assert cm.getConfiguration('baz').properties.get('a') == 'a2'
         assert cm.getConfiguration('foo').properties.get('a') == 'a'
         assert cm.getConfiguration('bar').properties.get('a') == 'a1'
+        assert cm.getConfiguration('foo2').properties.get('a') == 'a2'
 
         //Now re init and remove the pid bar
         config[REPOSITORY_CONFIG] = [
                 foo : [a:'a-new', b:1],
+                foo2 : [a:'a2', b:2]
         ]
         initRegistry(config)
 
         assert cm.getConfiguration('baz').properties.get('a') == 'a2'
         assert cm.getConfiguration('foo').properties.get('a') == 'a-new'
         assert cm.getConfiguration('bar').properties == null
+        assert cm.getConfiguration('foo2').properties.get('a') == 'a2'
     }
 
     private static Map createConfigMap() {


Reply via email to