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) {