You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by io...@apache.org on 2011/09/08 00:00:47 UTC

svn commit: r1166434 - in /karaf/cellar/trunk: assembly/src/main/resources/ core/src/main/java/org/apache/karaf/cellar/core/discovery/ hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/

Author: iocanel
Date: Wed Sep  7 22:00:46 2011
New Revision: 1166434

URL: http://svn.apache.org/viewvc?rev=1166434&view=rev
Log:
[KARAF-856] Cellar discovery task now uses a new property for storing the discovered member IPs. Added some checks for avoiding overwrites on the properties used for unicast discovery.

Modified:
    karaf/cellar/trunk/assembly/src/main/resources/instance.cfg
    karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java
    karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
    karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java

Modified: karaf/cellar/trunk/assembly/src/main/resources/instance.cfg
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/assembly/src/main/resources/instance.cfg?rev=1166434&r1=1166433&r2=1166434&view=diff
==============================================================================
--- karaf/cellar/trunk/assembly/src/main/resources/instance.cfg (original)
+++ karaf/cellar/trunk/assembly/src/main/resources/instance.cfg Wed Sep  7 22:00:46 2011
@@ -7,4 +7,7 @@ multicastPort=54327
 multicastTimeoutSeconds=2
 
 tcpIpEnabled=true
-tcpIpMembers=
\ No newline at end of file
+tcpIpMembers=
+
+#DO NOT EDIT THIS PROPERTY USE tcpIpMembers INSTEAD
+discoveredMembers=
\ No newline at end of file

Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java?rev=1166434&r1=1166433&r2=1166434&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java Wed Sep  7 22:00:46 2011
@@ -18,6 +18,7 @@ public class Discovery {
 
     public static final String PID = "org.apache.karaf.cellar.instance";
     public static final String MEMBERS_PROPERTY_NAME = "tcpIpMembers";
+    public static final String DISCOVERED_MEMBERS_PROPERTY_NAME = "discoveredMembers";
 
     public static final String INTERVAL = "interval";
     public static final String TASK_ID = "discovery-task-id";

Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java?rev=1166434&r1=1166433&r2=1166434&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java Wed Sep  7 22:00:46 2011
@@ -34,6 +34,7 @@ public class DiscoveryTask implements Ru
 
     @Override
     public void run() {
+        LOGGER.trace("CELLAR DISCOVERY: Starting the discovery task.");
         if (configurationAdmin != null) {
             Set<String> members = new LinkedHashSet<String>();
             if (discoveryServices != null && !discoveryServices.isEmpty()) {
@@ -42,20 +43,19 @@ public class DiscoveryTask implements Ru
                     Set<String> discovered = service.discoverMembers();
                     members.addAll(discovered);
                 }
-            }
-
             try {
                 Configuration configuration = configurationAdmin.getConfiguration(Discovery.PID);
                 Dictionary properties = configuration.getProperties();
                 String newMemberText = buildMemberList(members);
                 String memberText = (String) properties.get(Discovery.MEMBERS_PROPERTY_NAME);
-                if (newMemberText != null && !newMemberText.equals(memberText)) {
-                    properties.put(Discovery.MEMBERS_PROPERTY_NAME, newMemberText);
+                if (newMemberText != null && !newMemberText.isEmpty() && !newMemberText.equals(memberText)) {
+                    properties.put(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME, newMemberText);
                     configuration.update(properties);
                 }
             } catch (IOException e) {
                 LOGGER.error("Failed to update member list", e);
             }
+            }
         }
     }
 

Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java?rev=1166434&r1=1166433&r2=1166434&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java (original)
+++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java Wed Sep  7 22:00:46 2011
@@ -20,6 +20,7 @@ import com.hazelcast.config.TcpIpConfig;
 import com.hazelcast.config.XmlConfigBuilder;
 import com.hazelcast.core.Hazelcast;
 import com.hazelcast.core.HazelcastInstance;
+import org.apache.karaf.cellar.core.discovery.Discovery;
 import org.apache.karaf.cellar.core.discovery.DiscoveryTask;
 import org.apache.karaf.cellar.core.utils.CombinedClassLoader;
 import org.osgi.framework.BundleContext;
@@ -68,6 +69,7 @@ public class HazelcastServiceFactory imp
     private boolean tcpIpEnabled = true;
     private String tcpIpMembers = "";
     private Set<String> tcpIpMemberSet = new LinkedHashSet<String>();
+    private Set<String> discoveredMemberSet = new LinkedHashSet<String>();
 
     private DiscoveryTask discoveryTask;
     private CombinedClassLoader combinedClassLoader;
@@ -182,6 +184,12 @@ public class HazelcastServiceFactory imp
                     tcpIpMemberSet = newTcpIpMemberSet;
                     updated = Boolean.TRUE;
                 }
+
+                Set<String> newDiscoveredMemberSet = createSetFromString((String) properties.get(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME));
+                if (discoveredMemberSet != null && newDiscoveredMemberSet != null && !collectionEquals(discoveredMemberSet, newDiscoveredMemberSet)) {
+                    discoveredMemberSet = newDiscoveredMemberSet;
+                    updated = Boolean.TRUE;
+                }
             }
 
             if (updated) {
@@ -294,6 +302,9 @@ public class HazelcastServiceFactory imp
         TcpIpConfig tcpIpConfig = new TcpIpConfig();
         tcpIpConfig.setEnabled(tcpIpEnabled);
         tcpIpConfig.setMembers(new ArrayList(tcpIpMemberSet));
+        if(discoveredMemberSet != null && !discoveredMemberSet.isEmpty() && tcpIpConfig.getMembers() != null) {
+            tcpIpConfig.getMembers().addAll(new ArrayList(discoveredMemberSet));
+        }
         return tcpIpConfig;
     }