[KARAF-2263] - Cellar-Cloud: discover member removes member information which 
isn't re-generated

git-svn-id: 
https://svn.apache.org/repos/asf/karaf/cellar/branches/cellar-2.2.x@1466413 
13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/karaf-cellar/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-cellar/commit/2d71c03f
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cellar/tree/2d71c03f
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cellar/diff/2d71c03f

Branch: refs/heads/cellar-2.2.x
Commit: 2d71c03feb64eda8881d9e0e9924fb1261250993
Parents: b49de53
Author: anierbeck <anierbeck@13f79535-47bb-0310-9956-ffa450edef68>
Authored: Wed Apr 10 10:10:00 2013 +0000
Committer: anierbeck <anierbeck@13f79535-47bb-0310-9956-ffa450edef68>
Committed: Wed Apr 10 10:10:00 2013 +0000

----------------------------------------------------------------------
 .../karaf/cellar/core/discovery/DiscoveryTask.java      | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/2d71c03f/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java 
b/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
index ee2fdd2..c25ac3e 100644
--- 
a/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
+++ 
b/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
@@ -16,6 +16,7 @@ package org.apache.karaf.cellar.core.discovery;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.Dictionary;
+import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -60,16 +61,25 @@ public class DiscoveryTask implements Runnable {
                     service.refresh();
                     Set<String> discovered = service.discoverMembers();
                     members.addAll(discovered);
-                    LOGGER.debug("CELLAR DISCOVERY: Service {} found members 
{}", service, discovered);
+                    LOGGER.trace("CELLAR DISCOVERY: Service {} found members 
{}", service, discovered);
                 }
                 try {
+                       LOGGER.trace("CELLAR DISCOVERY: retrieving 
configuration for PID={}", Discovery.PID);
                     Configuration configuration = 
configurationAdmin.getConfiguration(Discovery.PID);
                     Dictionary properties = configuration.getProperties();
+                    if (properties == null) {
+                       //this is a new configuration ...
+                       LOGGER.trace("CELLAR DISCOVERY: configuration is new!");
+                       properties = new Hashtable();
+                    }
                     String newMemberText = 
CellarUtils.createStringFromSet(members, true);
                     String memberText = (String) 
properties.get(Discovery.MEMBERS_PROPERTY_NAME);
                     if (newMemberText != null && newMemberText.length() > 0 && 
!newMemberText.equals(memberText)) {
                         
properties.put(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME, newMemberText);
+                        LOGGER.trace("CELLAR DISCOVERY: adding a new member {} 
to configuration and updating it", newMemberText);
                         configuration.update(properties);
+                    } else {
+                       LOGGER.trace("CELLAR DISCOVERY: found a valid member in 
the configuration will skip");
                     }
                 } catch (IOException e) {
                     LOGGER.error("Failed to update member list", e);

Reply via email to