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 <chux...@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
      *

Reply via email to