This is an automated email from the ASF dual-hosted git repository.
xyuanlu pushed a commit to branch ApplicationClusterManager
in repository https://gitbox.apache.org/repos/asf/helix.git
The following commit(s) were added to refs/heads/ApplicationClusterManager by
this push:
new 311b311d9 Change canCompleteSwap and completeSwapIfPossible to return
json with kv pair for result of check or attempt to complete swap. (#2697)
311b311d9 is described below
commit 311b311d9a26fd420d6d6719e7f524d494789167
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());
}