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); }