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

nic 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 e1f62fa  KYLIN-3938 Fix can't discard OPTMIZE CHECKPOINT job
e1f62fa is described below

commit e1f62fa59eacee8736b935bbff5ae10f5e4e437b
Author: chao long <wayn...@qq.com>
AuthorDate: Thu Apr 11 14:34:45 2019 +0800

    KYLIN-3938 Fix can't discard OPTMIZE CHECKPOINT job
---
 core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java | 10 ++++++++++
 .../main/java/org/apache/kylin/rest/service/JobService.java    |  6 +-----
 .../src/main/java/org/apache/kylin/rest/util/AclEvaluate.java  | 10 +++++++++-
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java 
b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
index 1062340..b2af656 100755
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -308,6 +308,16 @@ public class CubeManager implements IRealizationProvider {
         }
     }
 
+    public CubeInstance dropOptmizingSegments(CubeInstance cube, 
CubeSegment... segsToDrop) throws IOException {
+        try (AutoLock lock = cubeMapLock.lockForWrite()) {
+            cube = cube.latestCopyForWrite(); // get a latest copy
+            CubeUpdate update = new CubeUpdate(cube);
+            update.setToRemoveSegs(segsToDrop);
+            update.setCuboidsRecommend(Sets.<Long> newHashSet()); //Set 
recommend cuboids to be null
+            return updateCube(update);
+        }
+    }
+
     public CubeInstance updateCubeSegStatus(CubeSegment seg, SegmentStatusEnum 
status) throws IOException {
         try (AutoLock lock = cubeMapLock.lockForWrite()) {
             CubeInstance cube = seg.getCubeInstance().latestCopyForWrite();
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
index a4f8b13..309735f 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
@@ -39,7 +39,6 @@ import org.apache.kylin.common.util.Pair;
 import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeManager;
 import org.apache.kylin.cube.CubeSegment;
-import org.apache.kylin.cube.CubeUpdate;
 import org.apache.kylin.cube.model.CubeBuildTypeEnum;
 import org.apache.kylin.engine.EngineFactory;
 import org.apache.kylin.engine.mr.BatchOptimizeJobCheckpointBuilder;
@@ -638,10 +637,7 @@ public class JobService extends BasicService implements 
InitializingBean {
                 }
             }
 
-            CubeUpdate cubeBuilder = new CubeUpdate(cubeInstance);
-            cubeBuilder.setToRemoveSegs(toRemoveSegments.toArray(new 
CubeSegment[toRemoveSegments.size()]));
-            cubeBuilder.setCuboidsRecommend(Sets.<Long> newHashSet()); //Set 
recommend cuboids to be null
-            getCubeManager().updateCube(cubeBuilder);
+            getCubeManager().dropOptmizingSegments(cubeInstance, 
toRemoveSegments.toArray(new CubeSegment[] {}));
         }
 
         for (String jobId : jobIdList) {
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/util/AclEvaluate.java 
b/server-base/src/main/java/org/apache/kylin/rest/util/AclEvaluate.java
index 0632c88..dcd625a 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/util/AclEvaluate.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/util/AclEvaluate.java
@@ -24,6 +24,7 @@ import org.apache.kylin.cube.CubeManager;
 import org.apache.kylin.engine.mr.CubingJob;
 import org.apache.kylin.job.JobInstance;
 import org.apache.kylin.job.execution.AbstractExecutable;
+import org.apache.kylin.job.execution.CheckpointExecutable;
 import org.apache.kylin.job.execution.ExecutableManager;
 import org.apache.kylin.metadata.project.ProjectInstance;
 import org.apache.kylin.metadata.project.ProjectManager;
@@ -48,7 +49,14 @@ public class AclEvaluate {
     private ProjectInstance getProjectByJob(JobInstance job) {
         AbstractExecutable executable = 
ExecutableManager.getInstance(KylinConfig.getInstanceFromEnv())
                 .getJob(job.getUuid());
-        String projectName = ((CubingJob) executable).getProjectName();
+        String projectName = null;
+        if (executable instanceof CubingJob) {
+            projectName = ((CubingJob) executable).getProjectName();
+        } else if (executable instanceof CheckpointExecutable) {
+            projectName = ((CheckpointExecutable) executable).getProjectName();
+        } else {
+            return null;
+        }
         return getProjectInstance(projectName);
     }
 

Reply via email to