You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/06/05 05:23:48 UTC
[60/67] [abbrv] kylin git commit: KYLIN-216 update draft design
KYLIN-216 update draft design
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/58a63073
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/58a63073
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/58a63073
Branch: refs/heads/master
Commit: 58a63073620d16c4bc1aeb0a44db6caadccd3d17
Parents: 944d3aa
Author: Luwei-Chen <ch...@apache.org>
Authored: Fri Jun 2 21:10:45 2017 +0800
Committer: liyang-gmt8 <li...@apache.org>
Committed: Fri Jun 2 21:25:23 2017 +0800
----------------------------------------------------------------------
.../org/apache/kylin/cube/CubeDescManager.java | 20 ++++++---
.../java/org/apache/kylin/cube/CubeManager.java | 4 +-
.../kylin/metadata/project/ProjectManager.java | 36 ++++++++++-----
.../kylin/rest/controller/CubeController.java | 3 --
.../rest/controller2/CubeControllerV2.java | 47 ++++++++++++--------
.../rest/controller2/ModelControllerV2.java | 46 ++++++++++---------
.../rest/response/CubeInstanceResponse.java | 18 --------
.../rest/response/DataModelDescResponse.java | 18 --------
.../apache/kylin/rest/service/CubeService.java | 21 +++++----
9 files changed, 107 insertions(+), 106 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java
index 85ca929..4c3c85d 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java
@@ -129,10 +129,11 @@ public class CubeDescManager {
}
@Override
- public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey) throws IOException {
+ public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey)
+ throws IOException {
String cubeDescName = cacheKey;
CubeDesc cubeDesc = getCubeDesc(cubeDescName);
- String modelName = cubeDesc == null ? null : cubeDesc.getModel().getName();
+ String modelName = cubeDesc == null ? null : cubeDesc.getModelName();
if (event == Event.DROP)
removeLocalCubeDesc(cubeDescName);
@@ -265,7 +266,8 @@ public class CubeDescManager {
int keyLength = 0;
while (parameter != null) {
String encoding = configuration.get(TopNMeasureType.CONFIG_ENCODING_PREFIX + parameter.getValue());
- String encodingVersionStr = configuration.get(TopNMeasureType.CONFIG_ENCODING_VERSION_PREFIX + parameter.getValue());
+ String encodingVersionStr = configuration
+ .get(TopNMeasureType.CONFIG_ENCODING_VERSION_PREFIX + parameter.getValue());
if (StringUtils.isEmpty(encoding) || DictionaryDimEnc.ENCODING_NAME.equals(encoding)) {
keyLength += DictionaryDimEnc.MAX_ENCODING_LENGTH; // estimation for dict encoding
} else {
@@ -279,7 +281,8 @@ public class CubeDescManager {
}
}
Object[] encodingConf = DimensionEncoding.parseEncodingConf(encoding);
- DimensionEncoding dimensionEncoding = DimensionEncodingFactory.create((String) encodingConf[0], (String[]) encodingConf[1], encodingVersion);
+ DimensionEncoding dimensionEncoding = DimensionEncodingFactory.create((String) encodingConf[0],
+ (String[]) encodingConf[1], encodingVersion);
keyLength += dimensionEncoding.getLengthOfEncoding();
}
@@ -309,16 +312,19 @@ public class CubeDescManager {
private void reloadAllCubeDesc() throws IOException {
ResourceStore store = getStore();
- logger.info("Reloading Cube Metadata from folder " + store.getReadableResourcePath(ResourceStore.CUBE_DESC_RESOURCE_ROOT));
+ logger.info("Reloading Cube Metadata from folder "
+ + store.getReadableResourcePath(ResourceStore.CUBE_DESC_RESOURCE_ROOT));
cubeDescMap.clear();
- List<String> paths = store.collectResourceRecursively(ResourceStore.CUBE_DESC_RESOURCE_ROOT, MetadataConstants.FILE_SURFIX);
+ List<String> paths = store.collectResourceRecursively(ResourceStore.CUBE_DESC_RESOURCE_ROOT,
+ MetadataConstants.FILE_SURFIX);
for (String path : paths) {
CubeDesc desc = loadCubeDesc(path, true);
if (!path.equals(desc.getResourcePath())) {
- logger.error("Skip suspicious desc at " + path + ", " + desc + " should be at " + desc.getResourcePath());
+ logger.error(
+ "Skip suspicious desc at " + path + ", " + desc + " should be at " + desc.getResourcePath());
continue;
}
if (cubeDescMap.containsKey(desc.getName())) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
----------------------------------------------------------------------
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 e6cd761..8546f76 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -326,7 +326,9 @@ public class CubeManager implements IRealizationProvider {
cube.setOwner(owner);
updateCubeWithRetry(new CubeUpdate(cube), 0);
- ProjectManager.getInstance(config).moveRealizationToProject(RealizationType.CUBE, cubeName, projectName, owner);
+ if (!desc.isDraft()) {
+ ProjectManager.getInstance(config).moveRealizationToProject(RealizationType.CUBE, cubeName, projectName, owner);
+ }
if (listener != null)
listener.afterCubeCreate(cube);
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
index a172db8..71d0e6c 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
@@ -28,6 +28,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import org.apache.commons.lang.StringUtils;
import org.apache.kylin.common.KylinConfig;
import org.apache.kylin.common.persistence.JsonSerializer;
import org.apache.kylin.common.persistence.ResourceStore;
@@ -52,7 +53,8 @@ import com.google.common.collect.Sets;
public class ProjectManager {
private static final Logger logger = LoggerFactory.getLogger(ProjectManager.class);
private static final ConcurrentMap<KylinConfig, ProjectManager> CACHE = new ConcurrentHashMap<KylinConfig, ProjectManager>();
- public static final Serializer<ProjectInstance> PROJECT_SERIALIZER = new JsonSerializer<ProjectInstance>(ProjectInstance.class);
+ public static final Serializer<ProjectInstance> PROJECT_SERIALIZER = new JsonSerializer<ProjectInstance>(
+ ProjectInstance.class);
public static ProjectManager getInstance(KylinConfig config) {
ProjectManager r = CACHE.get(config);
@@ -108,7 +110,8 @@ public class ProjectManager {
}
@Override
- public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey) throws IOException {
+ public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey)
+ throws IOException {
String project = cacheKey;
if (event == Event.DROP)
@@ -129,7 +132,8 @@ public class ProjectManager {
ResourceStore store = getStore();
List<String> paths = store.collectResourceRecursively(ResourceStore.PROJECT_RESOURCE_ROOT, ".json");
- logger.debug("Loading Project from folder " + store.getReadableResourcePath(ResourceStore.PROJECT_RESOURCE_ROOT));
+ logger.debug(
+ "Loading Project from folder " + store.getReadableResourcePath(ResourceStore.PROJECT_RESOURCE_ROOT));
for (String path : paths) {
reloadProjectLocalAt(path);
@@ -165,7 +169,8 @@ public class ProjectManager {
return projectMap.get(projectName);
}
- public ProjectInstance createProject(String projectName, String owner, String description, LinkedHashMap<String, String> overrideProps) throws IOException {
+ public ProjectInstance createProject(String projectName, String owner, String description,
+ LinkedHashMap<String, String> overrideProps) throws IOException {
logger.info("Creating project " + projectName);
ProjectInstance currentProject = getProject(projectName);
@@ -191,7 +196,8 @@ public class ProjectManager {
}
if (projectInstance.getRealizationCount(null) != 0) {
- throw new IllegalStateException("The project named " + projectName + " can not be deleted because there's still realizations in it. Delete them first.");
+ throw new IllegalStateException("The project named " + projectName
+ + " can not be deleted because there's still realizations in it. Delete them first.");
}
logger.info("Dropping project '" + projectInstance.getName() + "'");
@@ -210,7 +216,8 @@ public class ProjectManager {
}
//update project itself
- public ProjectInstance updateProject(ProjectInstance project, String newName, String newDesc, LinkedHashMap<String, String> overrideProps) throws IOException {
+ public ProjectInstance updateProject(ProjectInstance project, String newName, String newDesc,
+ LinkedHashMap<String, String> overrideProps) throws IOException {
if (!project.getName().equals(newName)) {
ProjectInstance newProject = this.createProject(newName, project.getOwner(), newDesc, overrideProps);
@@ -286,16 +293,24 @@ public class ProjectManager {
return newProject;
}
- public ProjectInstance moveRealizationToProject(RealizationType type, String realizationName, String newProjectName, String owner) throws IOException {
+ public ProjectInstance moveRealizationToProject(RealizationType type, String realizationName, String newProjectName,
+ String owner) throws IOException {
removeRealizationsFromProjects(type, realizationName);
return addRealizationToProject(type, realizationName, newProjectName, owner);
}
- private ProjectInstance addRealizationToProject(RealizationType type, String realizationName, String project, String user) throws IOException {
+ private ProjectInstance addRealizationToProject(RealizationType type, String realizationName, String project,
+ String user) throws IOException {
String newProjectName = norm(project);
+ if (StringUtils.isEmpty(newProjectName)) {
+ throw new IllegalArgumentException("Project name should not be empty.");
+ }
ProjectInstance newProject = getProject(newProjectName);
if (newProject == null) {
- newProject = this.createProject(newProjectName, user, "This is a project automatically added when adding realization " + realizationName + "(" + type + ")", null);
+ newProject = this.createProject(newProjectName, user,
+ "This is a project automatically added when adding realization " + realizationName + "(" + type
+ + ")",
+ null);
}
newProject.addRealizationEntry(type, realizationName);
updateProject(newProject);
@@ -436,7 +451,8 @@ public class ProjectManager {
public boolean isExposedColumn(String project, String table, String col) {
return config.isAdhocEnabled() ? //
- l2Cache.isDefinedColumn(norm(project), table, col) || l2Cache.isExposedColumn(norm(project), table, col) : //
+ l2Cache.isDefinedColumn(norm(project), table, col) || l2Cache.isExposedColumn(norm(project), table, col)
+ : //
l2Cache.isExposedColumn(norm(project), table, col);
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
----------------------------------------------------------------------
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 f932509..bfa5603 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
@@ -299,9 +299,6 @@ public class CubeController extends BasicController {
if (cube == null) {
throw new InternalErrorException("Cannot find cube " + cubeName);
}
- if (cube.getStatus() != null && cube.getStatus().equals("DRAFT")) {
- throw new BadRequestException("Cannot build draft cube");
- }
return jobService.submitJob(cube, startTime, endTime, startOffset, endOffset, //
sourcePartitionOffsetStart, sourcePartitionOffsetEnd, CubeBuildTypeEnum.valueOf(buildType), force, submitter);
} catch (Throwable e) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
index 8179bc8..2edfe7d 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
@@ -21,7 +21,6 @@ package org.apache.kylin.rest.controller2;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -51,7 +50,6 @@ import org.apache.kylin.rest.request.CubeRequest;
import org.apache.kylin.rest.request.JobBuildRequest;
import org.apache.kylin.rest.request.JobBuildRequest2;
import org.apache.kylin.rest.response.CubeInstanceResponse;
-import org.apache.kylin.rest.response.CubeInstanceResponse.CubeComparator;
import org.apache.kylin.rest.response.EnvelopeResponse;
import org.apache.kylin.rest.response.GeneralResponse;
import org.apache.kylin.rest.response.HBaseResponse;
@@ -117,20 +115,19 @@ public class CubeControllerV2 extends BasicController {
List<CubeInstanceResponse> cubeInstanceResponses = new ArrayList<CubeInstanceResponse>();
List<CubeInstance> cubes = cubeService.listAllCubes(cubeName, projectName, modelName);
- int offset = pageOffset * pageSize;
- int limit = pageSize;
-
- if (cubes.size() <= offset) {
- offset = cubes.size();
- limit = 0;
- }
+ for (CubeInstance cube : cubes) {
+ CubeInstanceResponse cubeInstanceResponse = new CubeInstanceResponse(cube);
- if ((cubes.size() - offset) < limit) {
- limit = cubes.size() - offset;
- }
+ if (cube.getDescriptor().isDraft()) {
+ String parentName = cube.getName().substring(0, cube.getName().lastIndexOf("_draft"));
+ CubeInstance official = cubeService.getCubeManager().getCube(parentName);
+ if (official == null) {
+ cubeInstanceResponse.setName(parentName);
+ } else {
+ continue;
+ }
+ }
- for (CubeInstance cube : cubes.subList(offset, offset + limit)) {
- CubeInstanceResponse cubeInstanceResponse = new CubeInstanceResponse(cube);
cubeInstanceResponse.setPartitionDateStart(cube.getDescriptor().getPartitionDateStart());
String getModelName = modelName == null ? cube.getDescriptor().getModelName() : modelName;
@@ -154,10 +151,22 @@ public class CubeControllerV2 extends BasicController {
cubeInstanceResponses.add(cubeInstanceResponse);
}
- CubeComparator cubeComparator = new CubeComparator();
- Collections.sort(cubeInstanceResponses, cubeComparator);
- data.put("cubes", cubeInstanceResponses);
- data.put("size", cubes.size());
+
+ int offset = pageOffset * pageSize;
+ int limit = pageSize;
+ int size = cubeInstanceResponses.size();
+
+ if (size <= offset) {
+ offset = size;
+ limit = 0;
+ }
+
+ if ((size - offset) < limit) {
+ limit = size - offset;
+ }
+
+ data.put("cubes", cubeInstanceResponses.subList(offset, offset + limit));
+ data.put("size", size);
return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
}
@@ -391,7 +400,7 @@ public class CubeControllerV2 extends BasicController {
if (cube == null) {
throw new BadRequestException(String.format(msg.getCUBE_NOT_FOUND(), cubeName));
}
- if (cube.getStatus() != null && cube.getStatus().equals("DRAFT")) {
+ if (cube.getDescriptor().isDraft()) {
throw new BadRequestException(msg.getBUILD_DRAFT_CUBE());
}
return jobService.submitJob(cube, startTime, endTime, startOffset, endOffset, //
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
index 9e47790..57debf0 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/ModelControllerV2.java
@@ -20,7 +20,6 @@ package org.apache.kylin.rest.controller2;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,7 +41,6 @@ import org.apache.kylin.rest.msg.Message;
import org.apache.kylin.rest.msg.MsgPicker;
import org.apache.kylin.rest.request.ModelRequest;
import org.apache.kylin.rest.response.DataModelDescResponse;
-import org.apache.kylin.rest.response.DataModelDescResponse.ModelComparator;
import org.apache.kylin.rest.response.EnvelopeResponse;
import org.apache.kylin.rest.response.GeneralResponse;
import org.apache.kylin.rest.response.ResponseCode;
@@ -100,33 +98,39 @@ public class ModelControllerV2 extends BasicController {
HashMap<String, Object> data = new HashMap<String, Object>();
List<DataModelDesc> models = modelService.listAllModels(modelName, projectName);
- int offset = pageOffset * pageSize;
- int limit = pageSize;
-
- if (models.size() <= offset) {
- offset = models.size();
- limit = 0;
- }
-
- if ((models.size() - offset) < limit) {
- limit = models.size() - offset;
- }
-
List<DataModelDescResponse> dataModelDescResponses = new ArrayList<DataModelDescResponse>();
- for (DataModelDesc model : modelService.getModels(modelName, projectName, limit, offset)) {
+ for (DataModelDesc model : models) {
DataModelDescResponse dataModelDescResponse = new DataModelDescResponse(model);
-
+ if (model.isDraft()) {
+ String parentName = model.getName().substring(0, model.getName().lastIndexOf("_draft"));
+ DataModelDesc official = modelService.getMetadataManager().getDataModelDesc(parentName);
+ if (official == null) {
+ dataModelDescResponse.setName(parentName);
+ } else {
+ continue;
+ }
+ }
if (projectName != null)
dataModelDescResponse.setProject(projectName);
else
dataModelDescResponse.setProject(projectService.getProjectOfModel(model.getName()));
-
dataModelDescResponses.add(dataModelDescResponse);
}
- ModelComparator modelComparator = new ModelComparator();
- Collections.sort(dataModelDescResponses, modelComparator);
- data.put("models", dataModelDescResponses);
- data.put("size", models.size());
+
+ int offset = pageOffset * pageSize;
+ int limit = pageSize;
+ int size = dataModelDescResponses.size();
+
+ if (size <= offset) {
+ offset = size;
+ limit = 0;
+ }
+
+ if ((size - offset) < limit) {
+ limit = size - offset;
+ }
+ data.put("models", dataModelDescResponses.subList(offset, offset + limit));
+ data.put("size", size);
return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/server-base/src/main/java/org/apache/kylin/rest/response/CubeInstanceResponse.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/response/CubeInstanceResponse.java b/server-base/src/main/java/org/apache/kylin/rest/response/CubeInstanceResponse.java
index ab59165..f05de22 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/response/CubeInstanceResponse.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/response/CubeInstanceResponse.java
@@ -18,8 +18,6 @@
package org.apache.kylin.rest.response;
-import java.util.Comparator;
-
import org.apache.kylin.cube.CubeInstance;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -72,20 +70,4 @@ public class CubeInstanceResponse extends CubeInstance {
setSegments(cubeInstance.getSegments());
setCreateTimeUTC(cubeInstance.getCreateTimeUTC());
}
-
- public static class CubeComparator implements Comparator<CubeInstanceResponse> {
- @Override
- public int compare(CubeInstanceResponse o1, CubeInstanceResponse o2) {
- String name1 = o1.getName(), name2 = o2.getName();
- if (name1.endsWith("_draft")) {
- name1 = name1.substring(0, name1.lastIndexOf("_draft"));
- }
- if (name2.endsWith("_draft")) {
- name2 = name2.substring(0, name2.lastIndexOf("_draft"));
- }
- if (name1.equals(name2))
- return o1.getName().compareTo(o2.getName());
- return name1.compareTo(name2);
- }
- }
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/server-base/src/main/java/org/apache/kylin/rest/response/DataModelDescResponse.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/response/DataModelDescResponse.java b/server-base/src/main/java/org/apache/kylin/rest/response/DataModelDescResponse.java
index 7ff30d3..59c9090 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/response/DataModelDescResponse.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/response/DataModelDescResponse.java
@@ -18,8 +18,6 @@
package org.apache.kylin.rest.response;
-import java.util.Comparator;
-
import org.apache.kylin.metadata.model.DataModelDesc;
import org.apache.kylin.metadata.model.PartitionDesc;
@@ -62,20 +60,4 @@ public class DataModelDescResponse extends DataModelDesc {
setCapacity(dataModelDesc.getCapacity());
setComputedColumnDescs(dataModelDesc.getComputedColumnDescs());
}
-
- public static class ModelComparator implements Comparator<DataModelDescResponse> {
- @Override
- public int compare(DataModelDescResponse o1, DataModelDescResponse o2) {
- String name1 = o1.getName(), name2 = o2.getName();
- if (name1.endsWith("_draft")) {
- name1 = name1.substring(0, name1.lastIndexOf("_draft"));
- }
- if (name2.endsWith("_draft")) {
- name2 = name2.substring(0, name2.lastIndexOf("_draft"));
- }
- if (name1.equals(name2))
- return o1.getName().compareTo(o2.getName());
- return name1.compareTo(name2);
- }
- }
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/58a63073/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
----------------------------------------------------------------------
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 1eaa31c..3c0bbc6 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
@@ -182,10 +182,13 @@ public class CubeService extends BasicService {
}
createdCube = getCubeManager().createCube(cubeName, projectName, createdDesc, owner);
- accessService.init(createdCube, AclPermission.ADMINISTRATION);
- ProjectInstance project = getProjectManager().getProject(projectName);
- accessService.inherit(createdCube, project);
+ if (!desc.isDraft()) {
+ accessService.init(createdCube, AclPermission.ADMINISTRATION);
+
+ ProjectInstance project = getProjectManager().getProject(projectName);
+ accessService.inherit(createdCube, project);
+ }
return createdCube;
}
@@ -248,13 +251,13 @@ public class CubeService extends BasicService {
if (!desc.isDraft()) {
int cuboidCount = CuboidCLI.simulateCuboidGeneration(updatedCubeDesc, false);
logger.info("Updated cube " + cube.getName() + " has " + cuboidCount + " cuboids");
- }
- ProjectManager projectManager = getProjectManager();
- if (!isCubeInProject(newProjectName, cube)) {
- String owner = SecurityContextHolder.getContext().getAuthentication().getName();
- ProjectInstance newProject = projectManager.moveRealizationToProject(RealizationType.CUBE, cube.getName(), newProjectName, owner);
- accessService.inherit(cube, newProject);
+ ProjectManager projectManager = getProjectManager();
+ if (!isCubeInProject(newProjectName, cube)) {
+ String owner = SecurityContextHolder.getContext().getAuthentication().getName();
+ ProjectInstance newProject = projectManager.moveRealizationToProject(RealizationType.CUBE, cube.getName(), newProjectName, owner);
+ accessService.inherit(cube, newProject);
+ }
}
return updatedCubeDesc;