This is an automated email from the ASF dual-hosted git repository.
jiajunwang 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 52b4719 Throw exception when query partition assignment in
Maintenance mode (#1855)
52b4719 is described below
commit 52b47197a9ef8bf52a227ce6fdc6e512d161b408
Author: xyuanlu <[email protected]>
AuthorDate: Mon Aug 30 11:25:34 2021 -0700
Throw exception when query partition assignment in Maintenance mode (#1855)
Throw exception for partitionAssignment when cluster in Maintenance mode.
---
.../helix/ResourceAssignmentOptimizerAccessor.java | 8 ++++++++
.../server/TestResourceAssignmentOptimizerAccessor.java | 13 ++++++++++---
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git
a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ResourceAssignmentOptimizerAccessor.java
b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ResourceAssignmentOptimizerAccessor.java
index 112a184..e4c0dad 100644
---
a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ResourceAssignmentOptimizerAccessor.java
+++
b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ResourceAssignmentOptimizerAccessor.java
@@ -329,6 +329,14 @@ public class ResourceAssignmentOptimizerAccessor extends
AbstractHelixResource {
InputFields inputFields, ClusterState clusterState, String clusterId,
AssignmentResult result) {
+ // If the cluster is in Maintenance mode, throw an exception
+ // TODO: we should return the partitionAssignment regardless of the
cluster is in Maintenance
+ // mode or not
+ if (getHelixAdmin().isInMaintenanceMode(clusterId)) {
+ throw new UnsupportedOperationException(
+ "Can not query potential Assignment when cluster is in Maintenance
mode.");
+ }
+
// Use getTargetAssignmentForWagedFullAuto for Waged resources.
ConfigAccessor cfgAccessor = getConfigAccessor();
List<ResourceConfig> wagedResourceConfigs = new ArrayList<>();
diff --git
a/helix-rest/src/test/java/org/apache/helix/rest/server/TestResourceAssignmentOptimizerAccessor.java
b/helix-rest/src/test/java/org/apache/helix/rest/server/TestResourceAssignmentOptimizerAccessor.java
index f0eece4..17eabf0 100644
---
a/helix-rest/src/test/java/org/apache/helix/rest/server/TestResourceAssignmentOptimizerAccessor.java
+++
b/helix-rest/src/test/java/org/apache/helix/rest/server/TestResourceAssignmentOptimizerAccessor.java
@@ -93,9 +93,9 @@ public class TestResourceAssignmentOptimizerAccessor extends
AbstractTestClass {
InstanceConfig config = _gSetupTool.getClusterManagementTool()
.getInstanceConfig(cluster, toEnabledInstance);
config.setInstanceEnabled(true);
+ _gSetupTool.getClusterManagementTool().setInstanceConfig(cluster,
toEnabledInstance, config);
_gSetupTool.getClusterManagementTool()
- .setInstanceConfig(cluster, toEnabledInstance, config);
-
+ .enableMaintenanceMode(cluster, false, TestHelper.getTestMethodName());
}
@Test
@@ -291,10 +291,17 @@ public class TestResourceAssignmentOptimizerAccessor
extends AbstractTestClass {
String payload5 =
"{\"InstanceChange\" : { { \"ActivateInstances\" : [\"" +
toDeactivatedInstance
- + "\"], \"DeactivateInstances\" : [\"" + toDeactivatedInstance +
"\"] }} ";
+ + "\"], \"DeactivateInstances\" : [\"" + toDeactivatedInstance +
"\"] }} ";
post(urlBase, null, Entity.entity(payload5,
MediaType.APPLICATION_JSON_TYPE),
Response.Status.BAD_REQUEST.getStatusCode(), true);
+ // Currently we do not support maintenance mode
+ _gSetupTool.getClusterManagementTool()
+ .enableMaintenanceMode(cluster, true, TestHelper.getTestMethodName());
+ String payload6 = "{}";
+ post(urlBase, null, Entity.entity(payload6,
MediaType.APPLICATION_JSON_TYPE),
+ Response.Status.BAD_REQUEST.getStatusCode(), true);
+
System.out.println("End test :" + TestHelper.getTestMethodName());
}
}
\ No newline at end of file