You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2020/02/07 14:26:11 UTC
[kylin] 16/44: fix bug KYLIN-4300.
This is an automated email from the ASF dual-hosted git repository.
nic pushed a commit to branch 3.0.x
in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 21241e847fb47d211dbc8b0dd9697961502a0101
Author: zengruios <57...@qq.com>
AuthorDate: Mon Dec 16 21:40:53 2019 +0800
fix bug KYLIN-4300.
---
.../cube/model/validation/rule/StreamingCubeRule.java | 3 ++-
.../org/apache/kylin/rest/service/ModelService.java | 17 +++++++++++------
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java
index 647f4c1..dfc5624 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java
@@ -44,7 +44,8 @@ public class StreamingCubeRule implements IValidatorRule<CubeDesc> {
public void validate(CubeDesc cube, ValidateContext context) {
DataModelDesc model = cube.getModel();
- if (model.getRootFactTable().getTableDesc().getSourceType() != ISourceAware.ID_STREAMING) {
+ if (model.getRootFactTable().getTableDesc().getSourceType() != ISourceAware.ID_STREAMING
+ && !model.getRootFactTable().getTableDesc().isStreamingTable()) {
return;
}
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java b/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java
index a385fab..888db7c 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java
@@ -136,12 +136,7 @@ public class ModelService extends BasicService {
throw new BadRequestException(String.format(Locale.ROOT, msg.getDUPLICATE_MODEL_NAME(), desc.getName()));
}
- String factTableName = desc.getRootFactTableName();
- TableDesc tableDesc = getTableManager().getTableDesc(factTableName, projectName);
- if (tableDesc.getSourceType() == ISourceAware.ID_STREAMING
- && (desc.getPartitionDesc() == null || desc.getPartitionDesc().getPartitionDateColumn() == null)) {
- throw new IllegalArgumentException("Must define a partition column.");
- }
+ validateModel(projectName, desc);
DataModelDesc createdDesc = null;
String owner = SecurityContextHolder.getContext().getAuthentication().getName();
@@ -151,10 +146,20 @@ public class ModelService extends BasicService {
public DataModelDesc updateModelAndDesc(String project, DataModelDesc desc) throws IOException {
aclEvaluate.checkProjectWritePermission(project);
+ validateModel(project, desc);
getDataModelManager().updateDataModelDesc(desc);
return desc;
}
+ public void validateModel(String project, DataModelDesc desc) throws IllegalArgumentException {
+ String factTableName = desc.getRootFactTableName();
+ TableDesc tableDesc = getTableManager().getTableDesc(factTableName, project);
+ if ((tableDesc.getSourceType() == ISourceAware.ID_STREAMING || tableDesc.isStreamingTable())
+ && (desc.getPartitionDesc() == null || desc.getPartitionDesc().getPartitionDateColumn() == null)) {
+ throw new IllegalArgumentException("Must define a partition column.");
+ }
+ }
+
public void dropModel(DataModelDesc desc) throws IOException {
aclEvaluate.checkProjectWritePermission(desc.getProjectInstance().getName());
Message msg = MsgPicker.getMsg();