This is an automated email from the ASF dual-hosted git repository. xyuanlu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/helix.git
commit 7feb732299f1fa3cb56eae254ff49276fa9b51a5 Author: Zachary Pinto <[email protected]> AuthorDate: Fri Nov 10 08:56:13 2023 -0800 Change canCompleteSwap and completeSwapIfPossible to return json with kv pair for result of check or attempt to complete swap. (#2697) --- .../server/resources/helix/PerInstanceAccessor.java | 12 ++++-------- .../helix/rest/server/TestPerInstanceAccessor.java | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java index b920f66ce..b1b4f8264 100644 --- a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java +++ b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java @@ -436,15 +436,11 @@ public class PerInstanceAccessor extends AbstractHelixResource { admin.setInstanceOperation(clusterId, instanceName, state); break; case canCompleteSwap: - if (!admin.canCompleteSwap(clusterId, instanceName)) { - return badRequest("Swap is not ready to be completed!"); - } - break; + return OK(OBJECT_MAPPER.writeValueAsString( + Map.of("successful", admin.canCompleteSwap(clusterId, instanceName)))); case completeSwapIfPossible: - if (!admin.completeSwapIfPossible(clusterId, instanceName)) { - return badRequest("Swap is not ready to be completed!"); - } - break; + return OK(OBJECT_MAPPER.writeValueAsString( + Map.of("successful", admin.completeSwapIfPossible(clusterId, instanceName)))); case addInstanceTag: if (!validInstance(node, instanceName)) { return badRequest("Instance names are not match!"); diff --git a/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java b/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java index 273019bd3..a8675202a 100644 --- a/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java +++ b/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java @@ -501,6 +501,26 @@ public class TestPerInstanceAccessor extends AbstractTestClass { instanceConfig = _configAccessor.getInstanceConfig(CLUSTER_NAME, INSTANCE_NAME); Assert.assertEquals( instanceConfig.getInstanceOperation(), ""); + + // test canCompleteSwap + Response canCompleteSwapResponse = + new JerseyUriRequestBuilder("clusters/{}/instances/{}?command=canCompleteSwap").format( + CLUSTER_NAME, INSTANCE_NAME).post(this, entity); + Assert.assertEquals(canCompleteSwapResponse.getStatus(), Response.Status.OK.getStatusCode()); + Map<String, Object> responseMap = + OBJECT_MAPPER.readValue(canCompleteSwapResponse.readEntity(String.class), Map.class); + Assert.assertFalse((boolean) responseMap.get("successful")); + + // test completeSwapIfPossible + Response completeSwapIfPossibleResponse = new JerseyUriRequestBuilder( + "clusters/{}/instances/{}?command=completeSwapIfPossible").format(CLUSTER_NAME, + INSTANCE_NAME).post(this, entity); + Assert.assertEquals(completeSwapIfPossibleResponse.getStatus(), + Response.Status.OK.getStatusCode()); + responseMap = + OBJECT_MAPPER.readValue(completeSwapIfPossibleResponse.readEntity(String.class), Map.class); + Assert.assertFalse((boolean) responseMap.get("successful")); + System.out.println("End test :" + TestHelper.getTestMethodName()); }
