You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/04/27 18:39:34 UTC

karaf-cellar git commit: [KARAF-3628] Improved Hazelcast Discovery Service when starting a new Hazelcast instance

Repository: karaf-cellar
Updated Branches:
  refs/heads/cellar-3.0.x 93011d7b1 -> 7f92015c5


[KARAF-3628] Improved Hazelcast Discovery Service when starting a new Hazelcast instance


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

Branch: refs/heads/cellar-3.0.x
Commit: 7f92015c51006c56197a4fde6a5c0721f0320c8f
Parents: 93011d7
Author: Flávio Ferreira <ff...@bikeemotion.com>
Authored: Fri Mar 20 17:13:02 2015 +0000
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Mon Apr 27 18:22:08 2015 +0200

----------------------------------------------------------------------
 assembly/src/main/resources/features.xml          |  6 +++---
 .../factory/HazelcastConfigurationManager.java    | 18 +++++++++++++++++-
 .../factory/HazelcastServiceFactory.java          |  6 +++++-
 .../resources/OSGI-INF/blueprint/blueprint.xml    |  5 +++++
 .../factory/HazelcastServiceFactoryTest.java      |  1 +
 5 files changed, 31 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/7f92015c/assembly/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/assembly/src/main/resources/features.xml b/assembly/src/main/resources/features.xml
index 0a81fe4..1907156 100644
--- a/assembly/src/main/resources/features.xml
+++ b/assembly/src/main/resources/features.xml
@@ -35,13 +35,13 @@
         </configfile>
         <bundle start-level="30" dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
         <bundle start-level="30" dependency="true">mvn:com.eclipsesource.minimal-json/minimal-json/0.9.2</bundle>
-        <bundle start-level="32">mvn:com.hazelcast/hazelcast/${hazelcast.version}</bundle>
+        <bundle start-level="70">mvn:com.hazelcast/hazelcast/${hazelcast.version}</bundle>
     </feature>
 
     <feature name="cellar-hazelcast" description="Cellar implementation based on Hazelcast" version="${project.version}" resolver="(obr)">
         <feature version="${hazelcast.version}">hazelcast</feature>
         <feature version="${project.version}">cellar-core</feature>
-        <bundle start-level="33">mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.hazelcast/${project.version}</bundle>
+        <bundle start-level="70">mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.hazelcast/${project.version}</bundle>
     </feature>
 
     <feature name="cellar-config" description="ConfigAdmin cluster support" version="${project.version}" resolver="(obr)">
@@ -101,7 +101,7 @@
     <feature name="cellar-kubernetes" description="Cellar kubernetes support in clusters" version="${project.version}" resolver="(obr)">
         <feature version="${project.version}">cellar-core</feature>
         <feature>fabric8-kubernetes-api</feature>
-        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.kubernetes/${project.version}</bundle>
+        <bundle start-level="40">mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.kubernetes/${project.version}</bundle>
     </feature>
 
     <feature name="cellar-webconsole" description="Cellar plugin for Karaf WebConsole" version="${project.version}" resolver="(obr)">

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/7f92015c/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 a724962..14b92b3 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
@@ -22,8 +22,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.apache.karaf.cellar.core.discovery.DiscoveryService;
 
 /**
  * Hazelcast configuration manager.
@@ -36,6 +38,7 @@ public class HazelcastConfigurationManager {
     private String xmlConfigLocation = System.getProperty("karaf.home") + "/etc/hazelcast.xml";
 
     private Set<String> discoveredMemberSet = new LinkedHashSet<String>();
+    private List<DiscoveryService> discoveryServices;
 
     /**
      * Build a Hazelcast {@link com.hazelcast.config.Config}.
@@ -45,7 +48,16 @@ public class HazelcastConfigurationManager {
     public Config getHazelcastConfig() {
         System.setProperty("hazelcast.config", xmlConfigLocation);
         Config config = new XmlConfigBuilder().build();
-        if (discoveredMemberSet != null) {
+        
+        if (config.getNetworkConfig().getJoin().getTcpIpConfig().isEnabled() && discoveredMemberSet != null) {
+            if (discoveryServices != null && !discoveryServices.isEmpty()) {
+                for (DiscoveryService service : discoveryServices) {
+                    service.refresh();
+                    Set<String> discovered = service.discoverMembers();
+                    discoveredMemberSet.addAll(discovered);
+                    LOGGER.trace("HAZELCAST STARTUP DISCOVERY: service {} found members {}", service, discovered);
+                }
+            }
             TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig();
             tcpIpConfig.getMembers().addAll(discoveredMemberSet);
         }
@@ -71,5 +83,9 @@ public class HazelcastConfigurationManager {
         }
         return updated;
     }
+    
+    public void setDiscoveryServices(List<DiscoveryService> discoveryServices) {
+        this.discoveryServices = discoveryServices;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/7f92015c/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 49c98ad..d5c634c 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
@@ -28,7 +28,7 @@ public class HazelcastServiceFactory {
 
     private BundleContext bundleContext;
     private CombinedClassLoader combinedClassLoader;
-    private HazelcastConfigurationManager configurationManager = new HazelcastConfigurationManager();
+    private HazelcastConfigurationManager configurationManager;
 
     private CountDownLatch initializationLatch = new CountDownLatch(1);
     private CountDownLatch instanceLatch = new CountDownLatch(1);
@@ -92,5 +92,9 @@ public class HazelcastServiceFactory {
     public void setCombinedClassLoader(CombinedClassLoader combinedClassLoader) {
         this.combinedClassLoader = combinedClassLoader;
     }
+    
+    public void setConfigurationManager(HazelcastConfigurationManager configurationManager) {
+        this.configurationManager = configurationManager;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/7f92015c/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 74e571a..2cae5fe 100644
--- a/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -22,10 +22,15 @@
     <bean id="instanceFactory" class="org.apache.karaf.cellar.hazelcast.factory.HazelcastServiceFactory"
           init-method="init" destroy-method="destroy">
         <property name="combinedClassLoader" ref="combinedClassLoader"/>
+        <property name="configurationManager" ref="hazelcastConfigurationManager"/>
         <property name="bundleContext" ref="blueprintBundleContext"/>
         <cm:managed-properties persistent-id="org.apache.karaf.cellar.discovery" update-strategy="component-managed"
                                   update-method="update"/>
     </bean>
+    
+    <bean id="hazelcastConfigurationManager" class="org.apache.karaf.cellar.hazelcast.factory.HazelcastConfigurationManager" >
+        <property name="discoveryServices" ref="discoveryServices"/>
+    </bean>
 
     <!-- Discovery Task -->
     <bean id="discoveryTask" class="org.apache.karaf.cellar.core.discovery.DiscoveryTask" init-method="init" destroy-method="destroy">

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/7f92015c/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java
----------------------------------------------------------------------
diff --git a/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java b/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java
index 502e3ae..120f65e 100644
--- a/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java
+++ b/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java
@@ -33,6 +33,7 @@ public class HazelcastServiceFactoryTest {
         // configuration that disables multicast and enables tcp on 127.0.0.1
         System.setProperty("karaf.home", "src/test/resources");
         HazelcastServiceFactory factory = new HazelcastServiceFactory();
+        factory.setConfigurationManager(new HazelcastConfigurationManager());
         factory.init();
         factory.getInstance();
         HazelcastInstance defaultInstance = Hazelcast.newHazelcastInstance(null);