This is an automated email from the ASF dual-hosted git repository.

jxue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git


The following commit(s) were added to refs/heads/master by this push:
     new 150d12f  [HELIX-805] Implementation on HelixAdmin to check if cluster 
in maintenance mode
150d12f is described below

commit 150d12fefebbd60a1d989342f5e755d228a4dae0
Author: ywang4 <[email protected]>
AuthorDate: Wed Jan 30 18:59:20 2019 -0800

    [HELIX-805] Implementation on HelixAdmin to check if cluster in maintenance 
mode
---
 .../src/main/java/org/apache/helix/HelixAdmin.java       | 16 +++++++++++++++-
 .../java/org/apache/helix/manager/zk/ZKHelixAdmin.java   |  9 ++++++++-
 .../controller/TestClusterMaintenanceMode.java           | 13 +++++++++++++
 .../test/java/org/apache/helix/mock/MockHelixAdmin.java  |  5 +++++
 4 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/helix-core/src/main/java/org/apache/helix/HelixAdmin.java 
b/helix-core/src/main/java/org/apache/helix/HelixAdmin.java
index 42932b4..6cbcffd 100644
--- a/helix-core/src/main/java/org/apache/helix/HelixAdmin.java
+++ b/helix-core/src/main/java/org/apache/helix/HelixAdmin.java
@@ -22,8 +22,15 @@ package org.apache.helix;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
-import org.apache.helix.model.*;
+import org.apache.helix.model.ClusterConstraints;
 import org.apache.helix.model.ClusterConstraints.ConstraintType;
+import org.apache.helix.model.ConstraintItem;
+import org.apache.helix.model.ExternalView;
+import org.apache.helix.model.HelixConfigScope;
+import org.apache.helix.model.IdealState;
+import org.apache.helix.model.InstanceConfig;
+import org.apache.helix.model.MaintenanceSignal;
+import org.apache.helix.model.StateModelDefinition;
 
 /*
  * Helix cluster management
@@ -315,6 +322,13 @@ public interface HelixAdmin {
       Map<String, String> customFields);
 
   /**
+   * Check specific cluster is in maintenance mode or not
+   * @param clusterName the cluster name
+   * @return true if in maintenance mode, false otherwise
+   */
+  boolean isInMaintenanceMode(String clusterName);
+
+  /**
    * Reset a list of partitions in error state for an instance
    * The partitions are assume to be in error state and reset will bring them 
from error
    * to initial state. An error to initial state transition is required for 
reset.
diff --git 
a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java 
b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
index 5a1310a..511ac8c 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
@@ -389,7 +389,14 @@ public class ZKHelixAdmin implements HelixAdmin {
   }
 
   @Override
-  @Deprecated
+  public boolean isInMaintenanceMode(String clusterName) {
+    HelixDataAccessor accessor =
+        new ZKHelixDataAccessor(clusterName, new 
ZkBaseDataAccessor<ZNRecord>(_zkClient));
+    Builder keyBuilder = accessor.keyBuilder();
+    return 
accessor.getBaseDataAccessor().exists(keyBuilder.maintenance().getPath(), 
AccessOption.PERSISTENT);
+  }
+
+  @Override
   public void enableMaintenanceMode(String clusterName, boolean enabled, 
String reason) {
     manuallyEnableMaintenanceMode(clusterName, enabled, reason, null);
   }
diff --git 
a/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterMaintenanceMode.java
 
b/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterMaintenanceMode.java
index ccf7c12..806af2f 100644
--- 
a/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterMaintenanceMode.java
+++ 
b/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterMaintenanceMode.java
@@ -67,6 +67,19 @@ public class TestClusterMaintenanceMode extends TaskTestBase 
{
   }
 
   @Test
+  public void testNotInMaintenanceMode() {
+    boolean isInMaintenanceMode = 
_gSetupTool.getClusterManagementTool().isInMaintenanceMode(CLUSTER_NAME);
+    Assert.assertFalse(isInMaintenanceMode);
+  }
+
+  @Test (dependsOnMethods = "testNotInMaintenanceMode")
+  public void testInMaintenanceMode() {
+    _gSetupTool.getClusterManagementTool().enableMaintenanceMode(CLUSTER_NAME, 
true, "Test");
+    boolean isInMaintenanceMode = 
_gSetupTool.getClusterManagementTool().isInMaintenanceMode(CLUSTER_NAME);
+    Assert.assertTrue(isInMaintenanceMode);
+  }
+
+  @Test (dependsOnMethods = "testInMaintenanceMode")
   public void testMaintenanceModeAddNewInstance() throws InterruptedException {
     _gSetupTool.getClusterManagementTool().enableMaintenanceMode(CLUSTER_NAME, 
true, "Test");
     ExternalView prevExternalView = _gSetupTool.getClusterManagementTool()
diff --git a/helix-core/src/test/java/org/apache/helix/mock/MockHelixAdmin.java 
b/helix-core/src/test/java/org/apache/helix/mock/MockHelixAdmin.java
index 6586cf9..6cb7790 100644
--- a/helix-core/src/test/java/org/apache/helix/mock/MockHelixAdmin.java
+++ b/helix-core/src/test/java/org/apache/helix/mock/MockHelixAdmin.java
@@ -280,6 +280,11 @@ public class MockHelixAdmin implements HelixAdmin {
 
   }
 
+  @Override
+  public boolean isInMaintenanceMode(String clusterName) {
+    return false;
+  }
+
   @Override public void resetPartition(String clusterName, String 
instanceName, String resourceName,
       List<String> partitionNames) {
 

Reply via email to