chenboat commented on a change in pull request #4608: Unit tests and bug fixes 
for DeleteTable rest API for controller.
URL: https://github.com/apache/incubator-pinot/pull/4608#discussion_r330386935
 
 

 ##########
 File path: 
pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableRestletResource.java
 ##########
 @@ -254,20 +254,40 @@ public SuccessResponse deleteTable(
 
     List<String> tablesDeleted = new LinkedList<>();
     try {
-      if (tableType != TableType.REALTIME && 
!TableNameBuilder.REALTIME.tableHasTypeSuffix(tableName)) {
+      boolean tableExist = false;
+      if (verifyTableType(tableName, tableType, tableType.OFFLINE)) {
+        tableExist = _pinotHelixResourceManager.hasOfflineTable(tableName);
+        // Even the table name does not exist, still go on to delete remaining 
table metadata in case a previous delete
+        // did not complete.
         _pinotHelixResourceManager.deleteOfflineTable(tableName);
         
tablesDeleted.add(TableNameBuilder.OFFLINE.tableNameWithType(tableName));
       }
-      if (tableType != TableType.OFFLINE && 
!TableNameBuilder.OFFLINE.tableHasTypeSuffix(tableName)) {
+      if (verifyTableType(tableName, tableType, tableType.REALTIME)) {
+        tableExist = _pinotHelixResourceManager.hasRealtimeTable(tableName);
+        // Even the table name does not exist, still go on to delete remaining 
table metadata in case a previous delete
+        // did not complete.
         _pinotHelixResourceManager.deleteRealtimeTable(tableName);
         
tablesDeleted.add(TableNameBuilder.REALTIME.tableNameWithType(tableName));
       }
+      if (!tableExist) {
+        throw new ControllerApplicationException(LOGGER, "Table '" + tableName 
+ "' does not exist",
+            Response.Status.NOT_FOUND);
+      }
       return new SuccessResponse("Tables: " + tablesDeleted + " deleted");
     } catch (Exception e) {
       throw new ControllerApplicationException(LOGGER, e.getMessage(), 
Response.Status.INTERNAL_SERVER_ERROR, e);
     }
   }
 
+  // Return true iff the table is of the expectedType based on the given 
tableName and tableType.
+  private boolean verifyTableType(String tableName, TableType tableType, 
TableType expectedType) {
 
 Review comment:
   Good point. Your logic is the same as the current one. Added a truth table 
in the comments to define the boolean logic -- this is probably the best way to 
understand the logic behind.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to