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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
