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 <[email protected]>
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);
}