[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);
