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

Reply via email to