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]

Reply via email to