]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10604 remove HazelcastMember.Attribute.NODE_TYPE
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 27 Apr 2018 08:24:31 +0000 (10:24 +0200)
committerSonarTech <sonartech@sonarsource.com>
Thu, 10 May 2018 18:20:54 +0000 (20:20 +0200)
server/sonar-main/src/main/java/org/sonar/application/AppStateFactory.java
server/sonar-main/src/main/java/org/sonar/application/cluster/ClusterAppStateImpl.java
server/sonar-main/src/test/java/org/sonar/application/cluster/ClusterAppStateImplTest.java
server/sonar-process/src/main/java/org/sonar/process/cluster/hz/HazelcastMember.java
server/sonar-process/src/main/java/org/sonar/process/cluster/hz/HazelcastMemberBuilder.java
server/sonar-process/src/test/java/org/sonar/process/cluster/hz/HazelcastMemberBuilderTest.java
server/sonar-process/src/test/java/org/sonar/process/cluster/hz/HazelcastMemberImplTest.java

index bc92244f7497443e29e253e68b53ff0fed3ce5ef..7c43140a3e2176a60850d60c30c9e72cd0ec02da 100644 (file)
@@ -30,18 +30,16 @@ import org.sonar.application.es.EsConnector;
 import org.sonar.application.es.EsConnectorImpl;
 import org.sonar.process.ProcessId;
 import org.sonar.process.Props;
-import org.sonar.process.cluster.NodeType;
 import org.sonar.process.cluster.hz.HazelcastMember;
 import org.sonar.process.cluster.hz.HazelcastMemberBuilder;
 
 import static java.util.Arrays.asList;
 import static org.sonar.process.ProcessProperties.Property.CLUSTER_HOSTS;
+import static org.sonar.process.ProcessProperties.Property.CLUSTER_NAME;
 import static org.sonar.process.ProcessProperties.Property.CLUSTER_NODE_HOST;
 import static org.sonar.process.ProcessProperties.Property.CLUSTER_NODE_NAME;
 import static org.sonar.process.ProcessProperties.Property.CLUSTER_NODE_PORT;
-import static org.sonar.process.ProcessProperties.Property.CLUSTER_NODE_TYPE;
 import static org.sonar.process.ProcessProperties.Property.CLUSTER_SEARCH_HOSTS;
-import static org.sonar.process.ProcessProperties.Property.CLUSTER_NAME;
 
 public class AppStateFactory {
 
@@ -64,7 +62,6 @@ public class AppStateFactory {
     HazelcastMemberBuilder builder = new HazelcastMemberBuilder()
       .setNetworkInterface(props.nonNullValue(CLUSTER_NODE_HOST.getKey()))
       .setMembers(asList(props.nonNullValue(CLUSTER_HOSTS.getKey()).split(",")))
-      .setNodeType(NodeType.parse(props.nonNullValue(CLUSTER_NODE_TYPE.getKey())))
       .setNodeName(props.nonNullValue(CLUSTER_NODE_NAME.getKey()))
       .setPort(Integer.parseInt(props.nonNullValue(CLUSTER_NODE_PORT.getKey())))
       .setProcessId(ProcessId.APP);
index 0659b0444e3207ecf895c5deb5e2e5bf4e3599ac..a1bdc68db334c04c57a368b37bc03663ed95f224 100644 (file)
@@ -48,11 +48,9 @@ import org.sonar.application.es.EsConnector;
 import org.sonar.process.MessageException;
 import org.sonar.process.NetworkUtilsImpl;
 import org.sonar.process.ProcessId;
-import org.sonar.process.cluster.NodeType;
 import org.sonar.process.cluster.hz.HazelcastMember;
 
 import static java.lang.String.format;
-import static org.sonar.process.cluster.hz.HazelcastMember.Attribute.NODE_TYPE;
 import static org.sonar.process.cluster.hz.HazelcastObjects.CLUSTER_NAME;
 import static org.sonar.process.cluster.hz.HazelcastObjects.LEADER;
 import static org.sonar.process.cluster.hz.HazelcastObjects.OPERATIONAL_PROCESSES;
@@ -282,8 +280,7 @@ public class ClusterAppStateImpl implements ClusterAppState {
     @Override
     public void memberRemoved(MembershipEvent membershipEvent) {
       removeOperationalProcess(membershipEvent.getMember().getUuid());
-      if (membershipEvent.getMembers().stream()
-        .noneMatch(this::isAppNode)) {
+      if (membershipEvent.getMembers().isEmpty()) {
         purgeSharedMemoryForAppNodes();
       }
     }
@@ -293,10 +290,6 @@ public class ClusterAppStateImpl implements ClusterAppState {
       // Nothing to do
     }
 
-    private boolean isAppNode(Member member) {
-      return NodeType.APPLICATION.getValue().equals(member.getStringAttribute(NODE_TYPE.getKey()));
-    }
-
     private void removeOperationalProcess(String uuid) {
       for (ClusterProcess clusterProcess : operationalProcesses.keySet()) {
         if (clusterProcess.getNodeUuid().equals(uuid)) {
index bab40cc3e183b77fcfedda1768fc372b0018275e..37b2563a79482d50fc5cd352222a5a5ff38951c4 100644 (file)
@@ -32,7 +32,6 @@ import org.sonar.application.es.EsConnector;
 import org.sonar.process.MessageException;
 import org.sonar.process.NetworkUtilsImpl;
 import org.sonar.process.ProcessId;
-import org.sonar.process.cluster.NodeType;
 import org.sonar.process.cluster.hz.HazelcastMember;
 import org.sonar.process.cluster.hz.HazelcastMemberBuilder;
 
@@ -140,7 +139,6 @@ public class ClusterAppStateImplTest {
     InetAddress loopback = InetAddress.getLoopbackAddress();
 
     return new HazelcastMemberBuilder()
-      .setNodeType(NodeType.APPLICATION)
       .setProcessId(ProcessId.COMPUTE_ENGINE)
       .setNodeName("bar")
       .setPort(NetworkUtilsImpl.INSTANCE.getNextAvailablePort(loopback))
index ab9cb252a2d0b11dc41215d925b05529b1ef73d5..012c1e1d1d449d5d80c52c50a9070761546d9f75 100644 (file)
@@ -27,7 +27,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.locks.Lock;
 import org.sonar.process.ProcessId;
-import org.sonar.process.cluster.NodeType;
 
 public interface HazelcastMember extends AutoCloseable {
 
@@ -36,11 +35,6 @@ public interface HazelcastMember extends AutoCloseable {
      * The key of the node name attribute of a member
      */
     NODE_NAME("NODE_NAME"),
-    /**
-     * The role of the sonar-application inside the SonarQube cluster
-     * {@link NodeType}
-     */
-    NODE_TYPE("NODE_TYPE"),
     /**
      * Key of process as defined by {@link ProcessId#getKey()}
      */
index edcbd659b391e29599149c09754c51d5380c7787..338cc6ad1f1dc5cdb6ca2d2cba04742d27292e9a 100644 (file)
@@ -30,7 +30,6 @@ import java.util.List;
 import java.util.stream.Collectors;
 import javax.annotation.CheckForNull;
 import org.sonar.process.ProcessId;
-import org.sonar.process.cluster.NodeType;
 import org.sonar.process.cluster.hz.HazelcastMember.Attribute;
 
 import static java.lang.String.format;
@@ -42,7 +41,6 @@ public class HazelcastMemberBuilder {
 
   private String nodeName;
   private int port;
-  private NodeType nodeType;
   private ProcessId processId;
   private String networkInterface;
   private List<String> members = new ArrayList<>();
@@ -52,12 +50,10 @@ public class HazelcastMemberBuilder {
     return this;
   }
 
-  public HazelcastMemberBuilder setNodeType(NodeType t) {
-    this.nodeType = t;
-    return this;
-  }
-
   public HazelcastMemberBuilder setProcessId(ProcessId p) {
+    if (p == ProcessId.ELASTICSEARCH) {
+      throw new IllegalArgumentException("Hazelcast must not be enabled on Elasticsearch node");
+    }
     this.processId = p;
     return this;
   }
@@ -128,7 +124,6 @@ public class HazelcastMemberBuilder {
 
     MemberAttributeConfig attributes = config.getMemberAttributeConfig();
     attributes.setStringAttribute(Attribute.NODE_NAME.getKey(), requireNonNull(nodeName, "Node name is missing"));
-    attributes.setStringAttribute(Attribute.NODE_TYPE.getKey(), requireNonNull(nodeType, "Node type is missing").getValue());
     attributes.setStringAttribute(Attribute.PROCESS_KEY.getKey(), requireNonNull(processId, "Process key is missing").getKey());
 
     return new HazelcastMemberImpl(Hazelcast.newHazelcastInstance(config));
index b06d7dc3570186de7ad98bbedee802e82b5b765b..a829d1008caf6b5eaddc91078d951381254021f0 100644 (file)
@@ -23,11 +23,11 @@ import java.net.InetAddress;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.DisableOnDebug;
+import org.junit.rules.ExpectedException;
 import org.junit.rules.TestRule;
 import org.junit.rules.Timeout;
 import org.sonar.process.NetworkUtilsImpl;
 import org.sonar.process.ProcessId;
-import org.sonar.process.cluster.NodeType;
 
 import static java.util.Arrays.asList;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -35,6 +35,8 @@ import static org.sonar.process.ProcessProperties.Property.CLUSTER_NODE_PORT;
 
 public class HazelcastMemberBuilderTest {
 
+  @Rule
+  public ExpectedException expectedException = ExpectedException.none();
   @Rule
   public TestRule safeguardTimeout = new DisableOnDebug(Timeout.seconds(60));
 
@@ -45,7 +47,6 @@ public class HazelcastMemberBuilderTest {
   @Test
   public void build_member() {
     HazelcastMember member = underTest
-      .setNodeType(NodeType.APPLICATION)
       .setProcessId(ProcessId.COMPUTE_ENGINE)
       .setNodeName("bar")
       .setPort(NetworkUtilsImpl.INSTANCE.getNextAvailablePort(loopback))
@@ -76,4 +77,12 @@ public class HazelcastMemberBuilderTest {
       "bar:9100",
       "1.2.3.4:" + CLUSTER_NODE_PORT.getDefaultValue());
   }
+
+  @Test
+  public void fail_if_elasticsearch_process() {
+    expectedException.expect(IllegalArgumentException.class);
+    expectedException.expectMessage("Hazelcast must not be enabled on Elasticsearch node");
+
+    underTest.setProcessId(ProcessId.ELASTICSEARCH);
+  }
 }
index ee7846270480294a68238b48a63a71dbf9d2ed94..ebe458f095215d73015270a259a5c43161b32337 100644 (file)
@@ -37,7 +37,6 @@ import org.junit.rules.TestRule;
 import org.junit.rules.Timeout;
 import org.sonar.process.NetworkUtilsImpl;
 import org.sonar.process.ProcessId;
-import org.sonar.process.cluster.NodeType;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -112,7 +111,6 @@ public class HazelcastMemberImplTest {
 
   private static HazelcastMember newHzMember(int port, int... otherPorts) {
     return new HazelcastMemberBuilder()
-      .setNodeType(NodeType.APPLICATION)
       .setProcessId(ProcessId.COMPUTE_ENGINE)
       .setNodeName("name" + port)
       .setPort(port)