You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2014/07/09 16:45:09 UTC

[3/8] git commit: Fixed (and simplified) clustering, using automatic zen discovery

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 <gi...@nakomis.com>
Authored: Wed Jun 4 13:33:30 2014 +0100
Committer: Martin Harris <gi...@nakomis.com>
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();