Fixed (and simplified) clustering, using automatic zen discovery

Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/20507af0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/20507af0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/20507af0

Branch: refs/heads/master
Commit: 20507af0818ed93f48cee185fde64a8ac9a4a0b4
Parents: 587e699
Author: Martin Harris <[email protected]>
Authored: Wed Jun 4 13:33:30 2014 +0100
Committer: Martin Harris <[email protected]>
Committed: Tue Jun 17 10:19:58 2014 +0100

----------------------------------------------------------------------
 .../elasticsearch/ElasticSearchCluster.java     |  2 -
 .../elasticsearch/ElasticSearchClusterImpl.java | 55 --------------------
 .../nosql/elasticsearch/ElasticSearchNode.java  |  3 +-
 .../elasticsearch/ElasticSearchNodeImpl.java    | 15 ------
 4 files changed, 1 insertion(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java
index 4f6448f..fea777e 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java
@@ -16,7 +16,5 @@ public interface ElasticSearchCluster extends DynamicCluster {
     BasicAttributeSensorAndConfigKey<String> CLUSTER_NAME = new 
BasicAttributeSensorAndConfigKey<String>(String.class, 
             "elasticsearch.cluster.name", "Name of the ElasticSearch cluster", 
"BrooklynCluster");
     
-    AttributeSensor<String> NODE_LIST = 
Sensors.newStringSensor("elasticsearch.cluster.node.list", "Comma delimited 
list of nodes in hostname:port format");
-    
     String getName();
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java
index 5e1deb6..fe60c4a 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java
@@ -4,45 +4,24 @@ import java.util.Collection;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import brooklyn.entity.Entity;
-import brooklyn.entity.basic.Attributes;
-import brooklyn.entity.group.AbstractMembershipTrackingPolicy;
 import brooklyn.entity.group.DynamicClusterImpl;
 import brooklyn.entity.proxying.EntitySpec;
 import brooklyn.location.Location;
-import brooklyn.policy.PolicySpec;
-import brooklyn.util.text.Strings;
 
 public class ElasticSearchClusterImpl extends DynamicClusterImpl implements 
ElasticSearchCluster {
     
     private AtomicInteger nextMemberId = new AtomicInteger(0);
-    private MemberTrackingPolicy policy;
     
     public ElasticSearchClusterImpl() {
         
     }
     
     @Override
-    public void init() {
-        policy = addPolicy(PolicySpec.create(MemberTrackingPolicy.class)
-                .displayName(getName() + " membership tracker")
-                .configure("group", this) 
-                
.configure(AbstractMembershipTrackingPolicy.NOTIFY_ON_DUPLICATES, false));
-    }
-    
-    @Override
     public void start(Collection<? extends Location> locations) {
         super.start(locations);
     }
     
     @Override
-    public void stop() {
-        if (policy != null) {
-            removePolicy(policy);
-        }
-        super.stop();
-    }
-
-    @Override
     protected boolean calculateServiceUp() {
         boolean up = false;
         for (Entity member : getMembers()) {
@@ -57,8 +36,6 @@ public class ElasticSearchClusterImpl extends 
DynamicClusterImpl implements Elas
         EntitySpec<ElasticSearchNode> spec = 
(EntitySpec<ElasticSearchNode>)getConfig(MEMBER_SPEC, 
EntitySpec.create(ElasticSearchNode.class));
         
         spec.configure(ElasticSearchNode.CLUSTER_NAME, 
getConfig(ElasticSearchClusterImpl.CLUSTER_NAME))
-            .configure(ElasticSearchNode.MULTICAST_ENABLED, false)
-            .configure(ElasticSearchNode.UNICAST_ENABLED, false)
             .configure(ElasticSearchNode.NODE_NAME, "elasticsearch-" + 
nextMemberId.incrementAndGet());
         
         return spec;
@@ -69,36 +46,4 @@ public class ElasticSearchClusterImpl extends 
DynamicClusterImpl implements Elas
         return getConfig(CLUSTER_NAME);
     }
     
-    private void resetCluster() {
-        String nodeList = "";
-        for (Entity entity : getMembers()) {
-            nodeList += getHostAndPort(entity) + ",";
-        }
-        if (!nodeList.isEmpty()) {
-            for (Entity entity : getMembers()) {
-                String otherNodesList = 
Strings.removeFromEnd(nodeList.replace(getHostAndPort(entity) + ",", ""), ",");
-                if (!otherNodesList.isEmpty()) {
-                    ((ElasticSearchNode)entity).resetCluster(otherNodesList);
-                }
-            }
-            
-        }
-        setAttribute(NODE_LIST, Strings.removeFromEnd(nodeList, ","));
-    }
-    
-    private String getHostAndPort(Entity entity) {
-        return entity.getAttribute(Attributes.HOSTNAME) + ":" + 
entity.getAttribute(Attributes.HTTP_PORT);
-    }
-    
-    public static class MemberTrackingPolicy extends 
AbstractMembershipTrackingPolicy {
-        @Override protected void onEntityChange(Entity member) {
-            ((ElasticSearchClusterImpl)entity).resetCluster();
-        }
-        @Override protected void onEntityAdded(Entity member) {
-            ((ElasticSearchClusterImpl)entity).resetCluster();
-        }
-        @Override protected void onEntityRemoved(Entity member) {
-            ((ElasticSearchClusterImpl)entity).resetCluster();
-        }
-    };
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
index e9ec525..718983a 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
@@ -20,7 +20,7 @@ import brooklyn.util.flags.SetFromFlag;
 @ImplementedBy(ElasticSearchNodeImpl.class)
 public interface ElasticSearchNode extends SoftwareProcess, 
DatastoreMixins.HasDatastoreUrl {
     @SetFromFlag("version")
-    ConfigKey<String> SUGGESTED_VERSION = 
ConfigKeys.newConfigKeyWithDefault(SoftwareProcess.SUGGESTED_VERSION, "1.2.0");
+    ConfigKey<String> SUGGESTED_VERSION = 
ConfigKeys.newConfigKeyWithDefault(SoftwareProcess.SUGGESTED_VERSION, "1.2.1");
     
     @SetFromFlag("downloadUrl")
     BasicAttributeSensorAndConfigKey<String> DOWNLOAD_URL = new 
BasicAttributeSensorAndConfigKey<String>(
@@ -63,5 +63,4 @@ public interface ElasticSearchNode extends SoftwareProcess, 
DatastoreMixins.HasD
     AttributeSensor<Integer> SEARCH_QUERY_TOTAL = 
Sensors.newIntegerSensor("elasticsearch.node.search.query.total");
     AttributeSensor<Integer> SEARCH_QUERY_TIME_IN_MILLIS = 
Sensors.newIntegerSensor("elasticsearch.node.search.query.time.in.millis");
     
-    void resetCluster(String nodeList);
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
index fafe67f..ec01539 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
@@ -96,21 +96,6 @@ public class ElasticSearchNodeImpl extends 
SoftwareProcessImpl implements Elasti
     }
     
     @Override
-    public void resetCluster(String nodeList) {
-        URI updateClusterUri;
-        try {
-            updateClusterUri = new 
URI(String.format("http://%s:%s/_cluster/settings";, 
getAttribute(Attributes.HOSTNAME), getAttribute(HTTP_PORT)));
-        } catch (URISyntaxException e) {
-            throw Exceptions.propagate(e);
-        }
-        HttpClient client = HttpTool.httpClientBuilder().build();
-        
-        String payload = 
String.format("{\"persistent\":{\"discovery.zen.ping.unicast.hosts\":\"%s\"}}", 
nodeList);
-        
-        HttpToolResponse result = HttpTool.httpPut(client, updateClusterUri, 
ImmutableMap.<String, String>of(), Strings.toByteArray(payload));
-    }
-    
-    @Override
     protected void disconnectSensors() {
         if (httpFeed != null) {
             httpFeed.stop();

Reply via email to