Author: anierbeck
Date: Wed Apr 10 10:10:00 2013
New Revision: 1466413

URL: http://svn.apache.org/r1466413
Log:
[KARAF-2263] - Cellar-Cloud: discover member removes member information which 
isn't re-generated

Modified:
    
karaf/cellar/branches/cellar-2.2.x/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java

Modified: 
karaf/cellar/branches/cellar-2.2.x/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
URL: 
http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java?rev=1466413&r1=1466412&r2=1466413&view=diff
==============================================================================
--- 
karaf/cellar/branches/cellar-2.2.x/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
 (original)
+++ 
karaf/cellar/branches/cellar-2.2.x/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
 Wed Apr 10 10:10:00 2013
@@ -16,6 +16,7 @@ package org.apache.karaf.cellar.core.dis
 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 Ru
                     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