You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org> on 2016/10/18 07:40:04 UTC

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Michael Blow has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/1298

Change subject: Deps++, Refactor ClusterManager
......................................................................

Deps++, Refactor ClusterManager

- Exclude runtime-scoped junit from appassembler-booter dep

Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
M asterixdb/asterix-client-helper/pom.xml
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
A asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
M asterixdb/asterix-server/pom.xml
8 files changed, 138 insertions(+), 46 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/98/1298/1

diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
index 764b559..919af33 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
@@ -62,7 +62,7 @@
 import org.apache.asterix.metadata.MetadataManager;
 import org.apache.asterix.metadata.api.IAsterixStateProxy;
 import org.apache.asterix.metadata.bootstrap.AsterixStateProxy;
-import org.apache.asterix.metadata.cluster.ClusterManager;
+import org.apache.asterix.metadata.cluster.ClusterManagerProvider;
 import org.apache.asterix.runtime.util.AsterixAppContextInfo;
 import org.apache.hyracks.api.application.ICCApplicationContext;
 import org.apache.hyracks.api.application.ICCApplicationEntryPoint;
@@ -128,7 +128,7 @@
             server.start();
         }
 
-        ClusterManager.INSTANCE.registerSubscriber(GlobalRecoveryManager.instance());
+        ClusterManagerProvider.getClusterManager().registerSubscriber(GlobalRecoveryManager.instance());
 
         ccAppCtx.addClusterLifecycleListener(ClusterLifecycleListener.INSTANCE);
         ccAppCtx.setMessageBroker(messageBroker);
@@ -323,13 +323,7 @@
 
     @Override
     public void startupCompleted() throws Exception {
-        // Notify Zookeeper that the startup is complete
-        ILookupService zookeeperService = ClusterManager.getLookupService();
-        if (zookeeperService != null) {
-            // Our asterix app runtimes tests don't use zookeeper
-            zookeeperService.reportClusterState(ClusterProperties.INSTANCE.getCluster().getInstanceName(),
-                    ClusterState.ACTIVE);
-        }
+        ClusterManagerProvider.getClusterManager().notifyStartupCompleted();
     }
 
     public static synchronized void setAsterixStateProxy(IAsterixStateProxy proxy) {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
index 75cbe44..7863557 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
@@ -37,7 +37,7 @@
 import org.apache.asterix.metadata.MetadataManager;
 import org.apache.asterix.metadata.cluster.AddNodeWork;
 import org.apache.asterix.metadata.cluster.AddNodeWorkResponse;
-import org.apache.asterix.metadata.cluster.ClusterManager;
+import org.apache.asterix.metadata.cluster.ClusterManagerProvider;
 import org.apache.asterix.metadata.cluster.RemoveNodeWork;
 import org.apache.asterix.metadata.cluster.RemoveNodeWorkResponse;
 import org.apache.asterix.runtime.util.ClusterStateManager;
@@ -79,7 +79,7 @@
         Set<String> nodeAddition = new HashSet<String>();
         nodeAddition.add(nodeId);
         updateProgress(ClusterEventType.NODE_JOIN, nodeAddition);
-        Set<IClusterEventsSubscriber> subscribers = ClusterManager.INSTANCE.getRegisteredClusterEventSubscribers();
+        Set<IClusterEventsSubscriber> subscribers = ClusterManagerProvider.getClusterManager().getRegisteredClusterEventSubscribers();
         Set<IClusterManagementWork> work = new HashSet<IClusterManagementWork>();
         for (IClusterEventsSubscriber sub : subscribers) {
             Set<IClusterManagementWork> workRequest = sub.notifyNodeJoin(nodeId);
@@ -105,7 +105,7 @@
             }
         }
         updateProgress(ClusterEventType.NODE_FAILURE, deadNodeIds);
-        Set<IClusterEventsSubscriber> subscribers = ClusterManager.INSTANCE.getRegisteredClusterEventSubscribers();
+        Set<IClusterEventsSubscriber> subscribers = ClusterManagerProvider.getClusterManager().getRegisteredClusterEventSubscribers();
         Set<IClusterManagementWork> work = new HashSet<IClusterManagementWork>();
         for (IClusterEventsSubscriber sub : subscribers) {
             Set<IClusterManagementWork> workRequest = sub.notifyNodeFailure(deadNodeIds);
@@ -172,7 +172,7 @@
             Node node = ClusterStateManager.INSTANCE.getAvailableSubstitutionNode();
             if (node != null) {
                 try {
-                    ClusterManager.INSTANCE.addNode(node);
+                    ClusterManagerProvider.getClusterManager().addNode(node);
                     addedNodes.add(asterixInstanceName + "_" + node.getId());
                     if (LOGGER.isLoggable(Level.INFO)) {
                         LOGGER.info("Added NC at:" + node.getId());
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
index f41c4f6..b1d8dd3 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
@@ -28,7 +28,7 @@
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.event.schema.cluster.Node;
 import org.apache.asterix.metadata.cluster.AddNodeWork;
-import org.apache.asterix.metadata.cluster.ClusterManager;
+import org.apache.asterix.metadata.cluster.ClusterManagerProvider;
 import org.apache.asterix.metadata.cluster.RemoveNodeWork;
 import org.apache.asterix.runtime.util.ClusterStateManager;
 
@@ -71,7 +71,7 @@
                     Node node = ClusterStateManager.INSTANCE.getAvailableSubstitutionNode();
                     if (node != null) {
                         try {
-                            ClusterManager.INSTANCE.addNode(node);
+                            ClusterManagerProvider.getClusterManager().addNode(node);
                             addedNodes.add(node);
                             if (LOGGER.isLoggable(Level.INFO)) {
                                 LOGGER.info("Added NC at:" + node.getId());
diff --git a/asterixdb/asterix-client-helper/pom.xml b/asterixdb/asterix-client-helper/pom.xml
index a078d16..3270fbb 100644
--- a/asterixdb/asterix-client-helper/pom.xml
+++ b/asterixdb/asterix-client-helper/pom.xml
@@ -96,6 +96,12 @@
       <groupId>org.codehaus.mojo.appassembler</groupId>
       <artifactId>appassembler-booter</artifactId>
       <version>1.10</version>
+      <exclusions>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
index 0131731..9ead1ee 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
@@ -54,4 +54,5 @@
      */
     public Set<IClusterEventsSubscriber> getRegisteredClusterEventSubscribers();
 
+    void notifyStartupCompleted() throws Exception;
 }
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
index 6371f3e..4df811b 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
@@ -30,6 +30,7 @@
 import javax.xml.bind.Unmarshaller;
 
 import org.apache.asterix.common.api.IClusterEventsSubscriber;
+import org.apache.asterix.common.api.IClusterManagementWork;
 import org.apache.asterix.common.config.AsterixExternalProperties;
 import org.apache.asterix.common.config.ClusterProperties;
 import org.apache.asterix.common.exceptions.AsterixException;
@@ -50,48 +51,46 @@
 
 public class ClusterManager implements IClusterManager {
 
-    private static final Logger LOGGER = Logger.getLogger(AsterixEventServiceClient.class.getName());
+    private static final Logger LOGGER = Logger.getLogger(ClusterManager.class.getName());
 
-    public static ClusterManager INSTANCE = new ClusterManager();
+    public static final IClusterManager INSTANCE = ClusterManagerProvider.getClusterManager();
 
-    private static AsterixEventServiceClient client;
+    private final AsterixEventServiceClient client;
 
-    private static ILookupService lookupService;
+    private final ILookupService lookupService;
 
-    private static final Set<IClusterEventsSubscriber> eventSubscribers = new HashSet<IClusterEventsSubscriber>();
+    private final Set<IClusterEventsSubscriber> eventSubscribers = new HashSet<>();
 
-    private ClusterManager() {
+    ClusterManager() {
         Cluster asterixCluster = ClusterProperties.INSTANCE.getCluster();
         String eventHome = asterixCluster == null ? null
                 : asterixCluster.getWorkingDir() == null ? null : asterixCluster.getWorkingDir().getDir();
 
-        if (eventHome != null) {
-            String asterixDir = System.getProperty("user.dir") + File.separator + "asterix";
-            File configFile = new File(System.getProperty("user.dir") + File.separator + "configuration.xml");
-            Configuration configuration = null;
+        String asterixDir = System.getProperty("user.dir") + File.separator + "asterix";
+        File configFile = new File(System.getProperty("user.dir") + File.separator + "configuration.xml");
+        Configuration configuration = null;
 
-            try {
-                JAXBContext configCtx = JAXBContext.newInstance(Configuration.class);
-                Unmarshaller unmarshaller = configCtx.createUnmarshaller();
-                configuration = (Configuration) unmarshaller.unmarshal(configFile);
-                AsterixEventService.initialize(configuration, asterixDir, eventHome);
-                client = AsterixEventService.getAsterixEventServiceClient(ClusterProperties.INSTANCE.getCluster());
+        try {
+            JAXBContext configCtx = JAXBContext.newInstance(Configuration.class);
+            Unmarshaller unmarshaller = configCtx.createUnmarshaller();
+            configuration = (Configuration) unmarshaller.unmarshal(configFile);
+            AsterixEventService.initialize(configuration, asterixDir, eventHome);
+            client = AsterixEventService.getAsterixEventServiceClient(ClusterProperties.INSTANCE.getCluster());
 
-                lookupService = ServiceProvider.INSTANCE.getLookupService();
-                if (!lookupService.isRunning(configuration)) {
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        LOGGER.info("Lookup service not running. Starting lookup service ...");
-                    }
-                    lookupService.startService(configuration);
-                } else {
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        LOGGER.info("Lookup service running");
-                    }
+            lookupService = ServiceProvider.INSTANCE.getLookupService();
+            if (!lookupService.isRunning(configuration)) {
+                if (LOGGER.isLoggable(Level.INFO)) {
+                    LOGGER.info("Lookup service not running. Starting lookup service ...");
                 }
-
-            } catch (Exception e) {
-                throw new IllegalStateException("Unable to initialize cluster manager" + e);
+                lookupService.startService(configuration);
+            } else {
+                if (LOGGER.isLoggable(Level.INFO)) {
+                    LOGGER.info("Lookup service running");
+                }
             }
+
+        } catch (Exception e) {
+            throw new IllegalStateException("Unable to initialize cluster manager" + e);
         }
     }
 
@@ -170,7 +169,10 @@
         return eventSubscribers;
     }
 
-    public static ILookupService getLookupService() {
-        return lookupService;
+    @Override
+    public void notifyStartupCompleted() throws Exception {
+        // Notify Zookeeper that the startup is complete
+        lookupService.reportClusterState(ClusterProperties.INSTANCE.getCluster().getInstanceName(),
+                IClusterManagementWork.ClusterState.ACTIVE);
     }
 }
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
new file mode 100644
index 0000000..35f2cae
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.metadata.cluster;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.apache.asterix.common.api.IClusterEventsSubscriber;
+import org.apache.asterix.common.config.ClusterProperties;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.event.schema.cluster.Cluster;
+import org.apache.asterix.event.schema.cluster.Node;
+import org.apache.asterix.metadata.api.IClusterManager;
+
+public class ClusterManagerProvider {
+
+    public static IClusterManager getClusterManager() {
+        return Holder.INSTANCE;
+    }
+
+    private static final class Holder {
+        static final IClusterManager INSTANCE;
+
+        static {
+            Cluster asterixCluster = ClusterProperties.INSTANCE.getCluster();
+            String eventHome = asterixCluster == null ? null
+                    : asterixCluster.getWorkingDir() == null ? null : asterixCluster.getWorkingDir().getDir();
+
+            if (eventHome != null) {
+                INSTANCE = new ClusterManager();
+            } else {
+                INSTANCE = new NoopClusterManager();
+            }
+        }
+    }
+    private static class NoopClusterManager implements IClusterManager {
+        @Override
+        public void addNode(Node node) throws AsterixException {
+            // no-op
+        }
+
+        @Override
+        public void removeNode(Node node) throws AsterixException {
+            // no-op
+        }
+
+        @Override
+        public void registerSubscriber(IClusterEventsSubscriber subscriber) {
+            // no-op
+        }
+
+        @Override
+        public boolean deregisterSubscriber(IClusterEventsSubscriber sunscriber) {
+            return true;
+        }
+
+        @Override
+        public Set<IClusterEventsSubscriber> getRegisteredClusterEventSubscribers() {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public void notifyStartupCompleted() throws Exception {
+            // no-op
+        }
+    }
+}
diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml
index 919cb16..50db2fd 100644
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@ -236,6 +236,12 @@
       <groupId>org.codehaus.mojo.appassembler</groupId>
       <artifactId>appassembler-booter</artifactId>
       <version>1.10</version>
+      <exclusions>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.asterix</groupId>

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 2:

Integration Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/967/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Hello Jenkins,

I'd like you to reexamine a change.  Please visit

    https://asterix-gerrit.ics.uci.edu/1298

to look at the new patch set (#2).

Change subject: Deps++, Refactor ClusterManager
......................................................................

Deps++, Refactor ClusterManager

- Exclude runtime-scoped junit from appassembler-booter dep

Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
M asterixdb/asterix-client-helper/pom.xml
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
A asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
M asterixdb/asterix-server/pom.xml
8 files changed, 146 insertions(+), 50 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/98/1298/2
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Till Westmann (Code Review)" <do...@asterixdb.incubator.apache.org>.
Till Westmann has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 2: Code-Review+2

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Michael Blow has submitted this change and it was merged.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Deps++, Refactor ClusterManager

- Exclude runtime-scoped junit from appassembler-booter dep

Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1298
Reviewed-by: Till Westmann <ti...@apache.org>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
M asterixdb/asterix-client-helper/pom.xml
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
A asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
M asterixdb/asterix-server/pom.xml
8 files changed, 146 insertions(+), 50 deletions(-)

Approvals:
  Till Westmann: Looks good to me, approved
  Jenkins: Verified

Objections:
  Jenkins: Violations found



diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
index 764b559..919af33 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
@@ -62,7 +62,7 @@
 import org.apache.asterix.metadata.MetadataManager;
 import org.apache.asterix.metadata.api.IAsterixStateProxy;
 import org.apache.asterix.metadata.bootstrap.AsterixStateProxy;
-import org.apache.asterix.metadata.cluster.ClusterManager;
+import org.apache.asterix.metadata.cluster.ClusterManagerProvider;
 import org.apache.asterix.runtime.util.AsterixAppContextInfo;
 import org.apache.hyracks.api.application.ICCApplicationContext;
 import org.apache.hyracks.api.application.ICCApplicationEntryPoint;
@@ -128,7 +128,7 @@
             server.start();
         }
 
-        ClusterManager.INSTANCE.registerSubscriber(GlobalRecoveryManager.instance());
+        ClusterManagerProvider.getClusterManager().registerSubscriber(GlobalRecoveryManager.instance());
 
         ccAppCtx.addClusterLifecycleListener(ClusterLifecycleListener.INSTANCE);
         ccAppCtx.setMessageBroker(messageBroker);
@@ -323,13 +323,7 @@
 
     @Override
     public void startupCompleted() throws Exception {
-        // Notify Zookeeper that the startup is complete
-        ILookupService zookeeperService = ClusterManager.getLookupService();
-        if (zookeeperService != null) {
-            // Our asterix app runtimes tests don't use zookeeper
-            zookeeperService.reportClusterState(ClusterProperties.INSTANCE.getCluster().getInstanceName(),
-                    ClusterState.ACTIVE);
-        }
+        ClusterManagerProvider.getClusterManager().notifyStartupCompleted();
     }
 
     public static synchronized void setAsterixStateProxy(IAsterixStateProxy proxy) {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
index 75cbe44..7a4ff13 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
@@ -37,7 +37,7 @@
 import org.apache.asterix.metadata.MetadataManager;
 import org.apache.asterix.metadata.cluster.AddNodeWork;
 import org.apache.asterix.metadata.cluster.AddNodeWorkResponse;
-import org.apache.asterix.metadata.cluster.ClusterManager;
+import org.apache.asterix.metadata.cluster.ClusterManagerProvider;
 import org.apache.asterix.metadata.cluster.RemoveNodeWork;
 import org.apache.asterix.metadata.cluster.RemoveNodeWorkResponse;
 import org.apache.asterix.runtime.util.ClusterStateManager;
@@ -79,7 +79,8 @@
         Set<String> nodeAddition = new HashSet<String>();
         nodeAddition.add(nodeId);
         updateProgress(ClusterEventType.NODE_JOIN, nodeAddition);
-        Set<IClusterEventsSubscriber> subscribers = ClusterManager.INSTANCE.getRegisteredClusterEventSubscribers();
+        Set<IClusterEventsSubscriber> subscribers =
+                ClusterManagerProvider.getClusterManager().getRegisteredClusterEventSubscribers();
         Set<IClusterManagementWork> work = new HashSet<IClusterManagementWork>();
         for (IClusterEventsSubscriber sub : subscribers) {
             Set<IClusterManagementWork> workRequest = sub.notifyNodeJoin(nodeId);
@@ -105,7 +106,8 @@
             }
         }
         updateProgress(ClusterEventType.NODE_FAILURE, deadNodeIds);
-        Set<IClusterEventsSubscriber> subscribers = ClusterManager.INSTANCE.getRegisteredClusterEventSubscribers();
+        Set<IClusterEventsSubscriber> subscribers =
+                ClusterManagerProvider.getClusterManager().getRegisteredClusterEventSubscribers();
         Set<IClusterManagementWork> work = new HashSet<IClusterManagementWork>();
         for (IClusterEventsSubscriber sub : subscribers) {
             Set<IClusterManagementWork> workRequest = sub.notifyNodeFailure(deadNodeIds);
@@ -172,7 +174,7 @@
             Node node = ClusterStateManager.INSTANCE.getAvailableSubstitutionNode();
             if (node != null) {
                 try {
-                    ClusterManager.INSTANCE.addNode(node);
+                    ClusterManagerProvider.getClusterManager().addNode(node);
                     addedNodes.add(asterixInstanceName + "_" + node.getId());
                     if (LOGGER.isLoggable(Level.INFO)) {
                         LOGGER.info("Added NC at:" + node.getId());
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
index f41c4f6..b1d8dd3 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterWorkExecutor.java
@@ -28,7 +28,7 @@
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.event.schema.cluster.Node;
 import org.apache.asterix.metadata.cluster.AddNodeWork;
-import org.apache.asterix.metadata.cluster.ClusterManager;
+import org.apache.asterix.metadata.cluster.ClusterManagerProvider;
 import org.apache.asterix.metadata.cluster.RemoveNodeWork;
 import org.apache.asterix.runtime.util.ClusterStateManager;
 
@@ -71,7 +71,7 @@
                     Node node = ClusterStateManager.INSTANCE.getAvailableSubstitutionNode();
                     if (node != null) {
                         try {
-                            ClusterManager.INSTANCE.addNode(node);
+                            ClusterManagerProvider.getClusterManager().addNode(node);
                             addedNodes.add(node);
                             if (LOGGER.isLoggable(Level.INFO)) {
                                 LOGGER.info("Added NC at:" + node.getId());
diff --git a/asterixdb/asterix-client-helper/pom.xml b/asterixdb/asterix-client-helper/pom.xml
index a078d16..3270fbb 100644
--- a/asterixdb/asterix-client-helper/pom.xml
+++ b/asterixdb/asterix-client-helper/pom.xml
@@ -96,6 +96,12 @@
       <groupId>org.codehaus.mojo.appassembler</groupId>
       <artifactId>appassembler-booter</artifactId>
       <version>1.10</version>
+      <exclusions>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
index 0131731..9ead1ee 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IClusterManager.java
@@ -54,4 +54,5 @@
      */
     public Set<IClusterEventsSubscriber> getRegisteredClusterEventSubscribers();
 
+    void notifyStartupCompleted() throws Exception;
 }
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
index 6371f3e..f473584 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
@@ -30,6 +30,7 @@
 import javax.xml.bind.Unmarshaller;
 
 import org.apache.asterix.common.api.IClusterEventsSubscriber;
+import org.apache.asterix.common.api.IClusterManagementWork;
 import org.apache.asterix.common.config.AsterixExternalProperties;
 import org.apache.asterix.common.config.ClusterProperties;
 import org.apache.asterix.common.exceptions.AsterixException;
@@ -50,48 +51,42 @@
 
 public class ClusterManager implements IClusterManager {
 
-    private static final Logger LOGGER = Logger.getLogger(AsterixEventServiceClient.class.getName());
+    private static final Logger LOGGER = Logger.getLogger(ClusterManager.class.getName());
 
-    public static ClusterManager INSTANCE = new ClusterManager();
+    public static final IClusterManager INSTANCE = ClusterManagerProvider.getClusterManager();
 
-    private static AsterixEventServiceClient client;
+    private final AsterixEventServiceClient client;
 
-    private static ILookupService lookupService;
+    private final ILookupService lookupService;
 
-    private static final Set<IClusterEventsSubscriber> eventSubscribers = new HashSet<IClusterEventsSubscriber>();
+    private final Set<IClusterEventsSubscriber> eventSubscribers = new HashSet<>();
 
-    private ClusterManager() {
-        Cluster asterixCluster = ClusterProperties.INSTANCE.getCluster();
-        String eventHome = asterixCluster == null ? null
-                : asterixCluster.getWorkingDir() == null ? null : asterixCluster.getWorkingDir().getDir();
+    ClusterManager(String eventHome) {
+        String asterixDir = System.getProperty("user.dir") + File.separator + "asterix";
+        File configFile = new File(System.getProperty("user.dir") + File.separator + "configuration.xml");
+        Configuration configuration = null;
 
-        if (eventHome != null) {
-            String asterixDir = System.getProperty("user.dir") + File.separator + "asterix";
-            File configFile = new File(System.getProperty("user.dir") + File.separator + "configuration.xml");
-            Configuration configuration = null;
+        try {
+            JAXBContext configCtx = JAXBContext.newInstance(Configuration.class);
+            Unmarshaller unmarshaller = configCtx.createUnmarshaller();
+            configuration = (Configuration) unmarshaller.unmarshal(configFile);
+            AsterixEventService.initialize(configuration, asterixDir, eventHome);
+            client = AsterixEventService.getAsterixEventServiceClient(ClusterProperties.INSTANCE.getCluster());
 
-            try {
-                JAXBContext configCtx = JAXBContext.newInstance(Configuration.class);
-                Unmarshaller unmarshaller = configCtx.createUnmarshaller();
-                configuration = (Configuration) unmarshaller.unmarshal(configFile);
-                AsterixEventService.initialize(configuration, asterixDir, eventHome);
-                client = AsterixEventService.getAsterixEventServiceClient(ClusterProperties.INSTANCE.getCluster());
-
-                lookupService = ServiceProvider.INSTANCE.getLookupService();
-                if (!lookupService.isRunning(configuration)) {
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        LOGGER.info("Lookup service not running. Starting lookup service ...");
-                    }
-                    lookupService.startService(configuration);
-                } else {
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        LOGGER.info("Lookup service running");
-                    }
+            lookupService = ServiceProvider.INSTANCE.getLookupService();
+            if (!lookupService.isRunning(configuration)) {
+                if (LOGGER.isLoggable(Level.INFO)) {
+                    LOGGER.info("Lookup service not running. Starting lookup service ...");
                 }
-
-            } catch (Exception e) {
-                throw new IllegalStateException("Unable to initialize cluster manager" + e);
+                lookupService.startService(configuration);
+            } else {
+                if (LOGGER.isLoggable(Level.INFO)) {
+                    LOGGER.info("Lookup service running");
+                }
             }
+
+        } catch (Exception e) {
+            throw new IllegalStateException("Unable to initialize cluster manager" + e);
         }
     }
 
@@ -170,7 +165,10 @@
         return eventSubscribers;
     }
 
-    public static ILookupService getLookupService() {
-        return lookupService;
+    @Override
+    public void notifyStartupCompleted() throws Exception {
+        // Notify Zookeeper that the startup is complete
+        lookupService.reportClusterState(ClusterProperties.INSTANCE.getCluster().getInstanceName(),
+                IClusterManagementWork.ClusterState.ACTIVE);
     }
 }
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
new file mode 100644
index 0000000..cbb3229
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.metadata.cluster;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.apache.asterix.common.api.IClusterEventsSubscriber;
+import org.apache.asterix.common.config.ClusterProperties;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.event.schema.cluster.Cluster;
+import org.apache.asterix.event.schema.cluster.Node;
+import org.apache.asterix.metadata.api.IClusterManager;
+
+public class ClusterManagerProvider {
+
+    private ClusterManagerProvider() {
+    }
+
+    public static IClusterManager getClusterManager() {
+        return Holder.INSTANCE;
+    }
+
+    private static final class Holder {
+        static final IClusterManager INSTANCE;
+
+        static {
+            Cluster asterixCluster = ClusterProperties.INSTANCE.getCluster();
+            String eventHome = asterixCluster == null ? null
+                    : asterixCluster.getWorkingDir() == null ? null : asterixCluster.getWorkingDir().getDir();
+
+            if (eventHome != null) {
+                INSTANCE = new ClusterManager(eventHome);
+            } else {
+                INSTANCE = new NoopClusterManager();
+            }
+        }
+
+        private Holder() {
+        }
+    }
+    private static class NoopClusterManager implements IClusterManager {
+        @Override
+        public void addNode(Node node) throws AsterixException {
+            // no-op
+        }
+
+        @Override
+        public void removeNode(Node node) throws AsterixException {
+            // no-op
+        }
+
+        @Override
+        public void registerSubscriber(IClusterEventsSubscriber subscriber) {
+            // no-op
+        }
+
+        @Override
+        public boolean deregisterSubscriber(IClusterEventsSubscriber sunscriber) {
+            return true;
+        }
+
+        @Override
+        public Set<IClusterEventsSubscriber> getRegisteredClusterEventSubscribers() {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public void notifyStartupCompleted() throws Exception {
+            // no-op
+        }
+    }
+}
diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml
index 919cb16..50db2fd 100644
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@ -236,6 +236,12 @@
       <groupId>org.codehaus.mojo.appassembler</groupId>
       <artifactId>appassembler-booter</artifactId>
       <version>1.10</version>
+      <exclusions>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.asterix</groupId>

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/3069/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 1:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/961/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 2:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/967/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/3062/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Till Westmann (Code Review)" <do...@asterixdb.incubator.apache.org>.
Till Westmann has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 1:

(1 comment)

Fix the long lines in ClusterLifecycleListener and maybe throw if eventHome is null?

https://asterix-gerrit.ics.uci.edu/#/c/1298/1/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
File asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java:

Line 66:         String eventHome = asterixCluster == null ? null
Seems that bad stuff could happen if eventHome is null ...


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: Yes

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Michael Blow has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 1:

(5 comments)

https://asterix-gerrit.ics.uci.edu/#/c/1298/1/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java
File asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ClusterLifecycleListener.java:

Line 82:         Set<IClusterEventsSubscriber> subscribers = ClusterManagerProvider.getClusterManager().getRegisteredClusterEventSubscribers();
> MAJOR SonarQube violation:
Done


Line 108:         Set<IClusterEventsSubscriber> subscribers = ClusterManagerProvider.getClusterManager().getRegisteredClusterEventSubscribers();
> MAJOR SonarQube violation:
Done


https://asterix-gerrit.ics.uci.edu/#/c/1298/1/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java
File asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManager.java:

Line 66:         String eventHome = asterixCluster == null ? null
> Seems that bad stuff could happen if eventHome is null ...
Done


https://asterix-gerrit.ics.uci.edu/#/c/1298/1/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java
File asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/cluster/ClusterManagerProvider.java:

Line 31: public class ClusterManagerProvider {
> MAJOR SonarQube violation:
Done


Line 37:     private static final class Holder {
> MAJOR SonarQube violation:
Done


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: Yes

Change in asterixdb[master]: Deps++, Refactor ClusterManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Deps++, Refactor ClusterManager
......................................................................


Patch Set 1: Integration-Tests+1

Integration Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/961/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1298
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic574f51133ed32f3b850640260f7faf598b12219
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No