This is an automated email from the ASF dual-hosted git repository.
jenniferdai pushed a commit to branch tenantNotFound
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit 0b5592b0b6f30cb63d49630f10c97a7faaefc458
Author: Jennifer Dai <jd...@linkedin.com>
AuthorDate: Thu Jan 9 15:06:17 2020 -0800
Add error for empty instance list for tenant API
---
.../api/resources/PinotTenantRestletResource.java | 20 +++++++++++---------
.../pinot/controller/helix/ControllerTenantTest.java | 10 ++++++++++
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTenantRestletResource.java b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTenantRestletResource.java
index 5f11c52..75861fd 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTenantRestletResource.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTenantRestletResource.java
@@ -46,10 +46,10 @@ import org.apache.pinot.common.config.TableConfig;
import org.apache.pinot.common.config.Tenant;
import org.apache.pinot.common.metrics.ControllerMeter;
import org.apache.pinot.common.metrics.ControllerMetrics;
-import org.apache.pinot.spi.utils.JsonUtils;
import org.apache.pinot.common.utils.TenantRole;
import org.apache.pinot.controller.helix.core.PinotHelixResourceManager;
import org.apache.pinot.controller.helix.core.PinotResourceManagerResponse;
+import org.apache.pinot.spi.utils.JsonUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -259,19 +259,21 @@ public class PinotTenantRestletResource {
private String listInstancesForTenant(String tenantName, String tenantType) {
ObjectNode resourceGetRet = JsonUtils.newObjectNode();
+ Set<String> allServerInstances = pinotHelixResourceManager.getAllInstancesForServerTenant(tenantName);
+ Set<String> allBrokerInstances = pinotHelixResourceManager.getAllInstancesForBrokerTenant(tenantName);
+ if (allServerInstances.isEmpty() && allBrokerInstances.isEmpty()) {
+ throw new ControllerApplicationException(LOGGER, "Failed to find any instances for tenant: " + tenantName,
+ Response.Status.NOT_FOUND);
+ }
if (tenantType == null) {
- resourceGetRet.set("ServerInstances",
- JsonUtils.objectToJsonNode(pinotHelixResourceManager.getAllInstancesForServerTenant(tenantName)));
- resourceGetRet.set("BrokerInstances",
- JsonUtils.objectToJsonNode(pinotHelixResourceManager.getAllInstancesForBrokerTenant(tenantName)));
+ resourceGetRet.set("ServerInstances", JsonUtils.objectToJsonNode(allServerInstances));
+ resourceGetRet.set("BrokerInstances", JsonUtils.objectToJsonNode(allBrokerInstances));
} else {
if (tenantType.equalsIgnoreCase("server")) {
- resourceGetRet.set("ServerInstances",
- JsonUtils.objectToJsonNode(pinotHelixResourceManager.getAllInstancesForServerTenant(tenantName)));
+ resourceGetRet.set("ServerInstances", JsonUtils.objectToJsonNode(allServerInstances));
}
if (tenantType.equalsIgnoreCase("broker")) {
- resourceGetRet.set("BrokerInstances",
- JsonUtils.objectToJsonNode(pinotHelixResourceManager.getAllInstancesForBrokerTenant(tenantName)));
+ resourceGetRet.set("BrokerInstances", JsonUtils.objectToJsonNode(allBrokerInstances));
}
}
resourceGetRet.put(TENANT_NAME, tenantName);
diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/helix/ControllerTenantTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/helix/ControllerTenantTest.java
index fbfbb88..c2406d3 100644
--- a/pinot-controller/src/test/java/org/apache/pinot/controller/helix/ControllerTenantTest.java
+++ b/pinot-controller/src/test/java/org/apache/pinot/controller/helix/ControllerTenantTest.java
@@ -106,6 +106,16 @@ public class ControllerTenantTest extends ControllerTest {
}
@Test
+ public void testEmptyServerTenant() {
+ try {
+ sendGetRequest(_controllerRequestURLBuilder.forServerTenantGet("doesn't_exist"));
+ Assert.fail();
+ } catch (Exception e) {
+
+ }
+ }
+
+ @Test
public void testServerTenant()
throws IOException {
// Create server tenants
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org