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 <[email protected]>
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
*