[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@1466931 
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/a9549d9b
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cellar/tree/a9549d9b
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cellar/diff/a9549d9b

Branch: refs/heads/cellar-2.2.x
Commit: a9549d9bfd1bb76b24ed9ced46bc4fb483f0aaaa
Parents: 2d71c03
Author: anierbeck <anierbeck@13f79535-47bb-0310-9956-ffa450edef68>
Authored: Thu Apr 11 15:54:54 2013 +0000
Committer: anierbeck <anierbeck@13f79535-47bb-0310-9956-ffa450edef68>
Committed: Thu Apr 11 15:54:54 2013 +0000

----------------------------------------------------------------------
 .../karaf/cellar/cloud/ServiceContainer.java    | 14 ++++++--
 .../factory/HazelcastConfigurationManager.java  |  7 +++-
 .../factory/HazelcastServiceFactory.java        | 36 +++++++++++++++++---
 3 files changed, 49 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/a9549d9b/cloud/src/main/java/org/apache/karaf/cellar/cloud/ServiceContainer.java
----------------------------------------------------------------------
diff --git 
a/cloud/src/main/java/org/apache/karaf/cellar/cloud/ServiceContainer.java 
b/cloud/src/main/java/org/apache/karaf/cellar/cloud/ServiceContainer.java
index c7a5098..ff77148 100644
--- a/cloud/src/main/java/org/apache/karaf/cellar/cloud/ServiceContainer.java
+++ b/cloud/src/main/java/org/apache/karaf/cellar/cloud/ServiceContainer.java
@@ -26,9 +26,9 @@ public class ServiceContainer implements Serializable {
        
        private DateTime registeredTime;
        private String hostName;
-
        private String hostIp;
-
+       private String hostPort;
+       
        public DateTime getRegisteredTime() {
                return registeredTime;
        }
@@ -40,10 +40,20 @@ public class ServiceContainer implements Serializable {
        public String getHostIp() {
                return hostIp;
        }
+       
+       public String getHostPort() {
+               return hostPort;
+       }
 
        public ServiceContainer(String hostName, String hostIp, DateTime 
registeredTime) {
+               this(hostName, hostIp, null, registeredTime);
+       }
+       
+       
+       public ServiceContainer(String hostName, String hostIp, String 
hostPort, DateTime registeredTime) {
                this.registeredTime = registeredTime;
                this.hostName = hostName;
                this.hostIp = hostIp;
+               this.hostPort = hostPort;
        }
 }

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/a9549d9b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
----------------------------------------------------------------------
diff --git 
a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
 
b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
index 212a59b..e4033a2 100644
--- 
a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
+++ 
b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
@@ -73,6 +73,11 @@ public class HazelcastConfigurationManager {
         return updated;
     }
 
-
+       /**
+        * @return the discoveredMemberSet
+        */
+       public Set<String> getDiscoveredMemberSet() {
+               return discoveredMemberSet;
+       }
 
 }

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/a9549d9b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
----------------------------------------------------------------------
diff --git 
a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
 
b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
index 7ab758f..d61e887 100644
--- 
a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
+++ 
b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
@@ -13,15 +13,20 @@
  */
 package org.apache.karaf.cellar.hazelcast.factory;
 
-import com.hazelcast.core.Hazelcast;
-import com.hazelcast.core.HazelcastInstance;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+
 import org.apache.karaf.cellar.core.utils.CombinedClassLoader;
 import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
+import com.hazelcast.config.Config;
+import com.hazelcast.config.TcpIpConfig;
+import com.hazelcast.core.Hazelcast;
+import com.hazelcast.core.HazelcastInstance;
 
 /**
  * A factory for a Hazelcast Instance, which integration with OSGi Service 
Registry and Config Admin.
@@ -53,7 +58,28 @@ public class HazelcastServiceFactory  {
     }
 
     public void update(Map properties) {
-        configurationManager.isUpdated(properties);
+       if (configurationManager.isUpdated(properties)) {
+               LOGGER.debug("CELLAR HAZELCAST: configuration update is true");
+               Config config = instance.getConfig();
+               TcpIpConfig tcpIpConfig = 
config.getNetworkConfig().getJoin().getTcpIpConfig();
+               List<String> members = tcpIpConfig.getMembers();
+               
+               Set<String> discoveredMemberSet = 
configurationManager.getDiscoveredMemberSet();
+               discoveredMemberSet.removeAll(members);
+               
+               if (!discoveredMemberSet.isEmpty()) {
+                       LOGGER.debug("CELLAR HAZELCAST: will add following 
members {}", discoveredMemberSet);
+                       instance.getLifecycleService().pause();
+                       for (String discoveredMember : discoveredMemberSet) {
+                               tcpIpConfig.addMember(discoveredMember);
+                               }
+                       if (!tcpIpConfig.isEnabled()) {
+                               LOGGER.debug("CELLAR HAZELCAST: tcpip mode 
needs to be enabled, will do now!");
+                               tcpIpConfig.setEnabled(true);
+                       }
+                       instance.getLifecycleService().restart();
+               }
+       }
     }
 
     /**

Reply via email to