You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2020/07/03 13:02:55 UTC

[kylin] branch master updated: KYLIN-4608 add deletecubefast api for delete 300 cubes fast

This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/master by this push:
     new 99317f4  KYLIN-4608 add deletecubefast api for delete 300 cubes fast
99317f4 is described below

commit 99317f4a3d8fb8cd479b9bb265767f4880236052
Author: chuxiao <ch...@didichuxing.com>
AuthorDate: Tue Jun 30 11:59:02 2020 +0800

    KYLIN-4608 add deletecubefast api for delete 300 cubes fast
---
 .../org/apache/kylin/rest/controller/CubeController.java | 16 ++++++++++++++++
 .../java/org/apache/kylin/rest/service/CubeService.java  |  9 +++++++++
 2 files changed, 25 insertions(+)

diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
index 1b5f1e4..11df5c1 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
@@ -595,6 +595,22 @@ public class CubeController extends BasicController {
 
     }
 
+    @RequestMapping(value = "/{cubeName}/fast", method = {RequestMethod.DELETE})
+    @ResponseBody
+    public void deleteCubeFast(@PathVariable String cubeName) {
+        checkCubeExists(cubeName);
+        CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
+
+        //drop Cube
+        try {
+            cubeService.deleteCubeFast(cube);
+        } catch (Exception e) {
+            logger.error(e.getLocalizedMessage(), e);
+            throw new InternalErrorException("Failed to delete cube. " + " Caused by: " + e.getMessage(), e);
+        }
+
+    }
+
     /**
      * save cubeDesc
      *
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java b/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
index f11f31a..e6210f4 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
@@ -368,6 +368,15 @@ public class CubeService extends BasicService implements InitializingBean {
         cleanSegmentStorage(toRemoveSegs);
     }
 
+    public void deleteCubeFast(CubeInstance cube) throws IOException {
+        aclEvaluate.checkProjectWritePermission(cube);
+        // user make sure no job running and no hybrid cube, so no check jobs status and hybrid definition
+        int cubeNum = getCubeManager().getCubesByDesc(cube.getDescriptor().getName()).size();
+        getCubeManager().dropCube(cube.getName(), cubeNum == 1);//only delete cube desc when no other cube is using it
+
+    }
+
+
     /**
      * Stop all jobs belonging to this cube and clean out all segments
      *