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;
}