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 2018/02/04 00:51:24 UTC
[21/50] [abbrv] kylin git commit: minor refactor: avoid exposing
cubedesc's getError public api
minor refactor: avoid exposing cubedesc's getError public api
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/59d50646
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/59d50646
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/59d50646
Branch: refs/heads/sync
Commit: 59d5064673282ba36783e0796523ad83c2dc5e8c
Parents: 16236ef
Author: Hongbin Ma <ma...@kyligence.io>
Authored: Fri Jan 26 19:13:12 2018 +0800
Committer: Li Yang <li...@apache.org>
Committed: Fri Jan 26 22:54:58 2018 +0800
----------------------------------------------------------------------
.../org/apache/kylin/cube/CubeDescManager.java | 2 +-
.../org/apache/kylin/cube/CubeInstance.java | 29 ++++++++++--------
.../org/apache/kylin/cube/model/CubeDesc.java | 13 ++------
.../kylin/rest/controller/CubeController.java | 32 ++++++++++++--------
.../apache/kylin/rest/service/CubeService.java | 12 ++++----
5 files changed, 47 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/59d50646/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 cd43f15..1db66e1 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
@@ -198,7 +198,7 @@ public class CubeDescManager {
postProcessCubeDesc(cubeDesc);
// Check base validation
- if (!cubeDesc.getError().isEmpty()) {
+ if (cubeDesc.isBroken()) {
return cubeDesc;
}
// Semantic validation
http://git-wip-us.apache.org/repos/asf/kylin/blob/59d50646/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
index a299203..6395abd 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
@@ -6,15 +6,15 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
-*/
+ */
package org.apache.kylin.cube;
@@ -130,13 +130,13 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
// default constructor for jackson
public CubeInstance() {
}
-
+
public CubeInstance latestCopyForWrite() {
CubeManager mgr = CubeManager.getInstance(config);
CubeInstance latest = mgr.getCube(name); // in case this object is out-of-date
return mgr.copyForWrite(latest);
}
-
+
void init(KylinConfig config) {
CubeDesc cubeDesc = CubeDescManager.getInstance(config).getCubeDesc(descName);
checkNotNull(cubeDesc, "cube descriptor '%s' (for cube '%s') not found", descName, name);
@@ -144,9 +144,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
if (cubeDesc.isBroken()) {
setStatus(RealizationStatusEnum.DESCBROKEN);
logger.error("cube descriptor {} (for cube '{}') is broken", cubeDesc.getResourcePath(), name);
- for (String error : cubeDesc.getError()) {
- logger.error("Error: {}", error);
- }
+ logger.error("Errors: {}", cubeDesc.getErrorsAsString());
} else if (getStatus() == RealizationStatusEnum.DESCBROKEN) {
setStatus(RealizationStatusEnum.DISABLED);
logger.info("cube {} changed from DESCBROKEN to DISABLED", name);
@@ -217,7 +215,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
return (getStatus() == RealizationStatusEnum.DISABLED || getStatus() == RealizationStatusEnum.DESCBROKEN)
&& segments.isEmpty();
}
-
+
@Override
public String resourceName() {
return name;
@@ -301,7 +299,12 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
public int getCost() {
int countedDimensionNum = getRowKeyColumnCount();
int c = countedDimensionNum * COST_WEIGHT_DIMENSION + getMeasures().size() * COST_WEIGHT_MEASURE;
- for (JoinTableDesc join : getModel().getJoinTables()) {
+ DataModelDesc model = getModel();
+ if (model == null) {
+ //in case broken cube
+ return 0;
+ }
+ for (JoinTableDesc join : model.getJoinTables()) {
if (join.getJoin().isInnerJoin())
c += CubeInstance.COST_WEIGHT_INNER_JOIN;
}
@@ -356,7 +359,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
}
return null;
}
-
+
public CubeSegment[] regetSegments(CubeSegment... segs) {
CubeSegment[] r = new CubeSegment[segs.length];
for (int i = 0; i < segs.length; i++) {
@@ -477,6 +480,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
/**
* Get cuboid level count except base cuboid
+ *
* @return
*/
public int getBuildLevel() {
@@ -562,7 +566,8 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
}
public SegmentRange autoMergeCubeSegments() throws IOException {
- return segments.autoMergeCubeSegments(needAutoMerge(), getName(), getDescriptor().getAutoMergeTimeRanges(), getDescriptor().getVolatileRange());
+ return segments.autoMergeCubeSegments(needAutoMerge(), getName(), getDescriptor().getAutoMergeTimeRanges(),
+ getDescriptor().getVolatileRange());
}
public Segments calculateToBeSegments(CubeSegment newSegment) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/59d50646/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
index 2369629..dbd8708 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
@@ -82,6 +82,7 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -1215,16 +1216,8 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware {
this.errors.add(message);
}
- public List<String> getError() {
- return this.errors;
- }
-
- public String getErrorMsg() {
- StringBuffer sb = new StringBuffer();
- for (String error : errors) {
- sb.append(error + " ");
- }
- return sb.toString();
+ public String getErrorsAsString() {
+ return Joiner.on("; ").join(errors);
}
public HBaseMappingDesc getHbaseMapping() {
http://git-wip-us.apache.org/repos/asf/kylin/blob/59d50646/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 89c11a8..ff9ecf7 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
@@ -6,15 +6,15 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
-*/
+ */
package org.apache.kylin.rest.controller;
@@ -93,7 +93,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
-import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -209,7 +208,7 @@ public class CubeController extends BasicController {
/**
* Get SQL of a Cube segment
*
- * @param cubeName Cube Name
+ * @param cubeName Cube Name
* @param segmentName Segment Name
* @return
* @throws IOException
@@ -319,7 +318,9 @@ public class CubeController extends BasicController {
}
}
- /** Build/Rebuild a cube segment */
+ /**
+ * Build/Rebuild a cube segment
+ */
@RequestMapping(value = "/{cubeName}/build", method = { RequestMethod.PUT }, produces = { "application/json" })
@ResponseBody
public JobInstance build(@PathVariable String cubeName, @RequestBody JobBuildRequest req) {
@@ -328,7 +329,9 @@ public class CubeController extends BasicController {
/** Build/Rebuild a cube segment */
- /** Build/Rebuild a cube segment */
+ /**
+ * Build/Rebuild a cube segment
+ */
@RequestMapping(value = "/{cubeName}/rebuild", method = { RequestMethod.PUT }, produces = { "application/json" })
@ResponseBody
public JobInstance rebuild(@PathVariable String cubeName, @RequestBody JobBuildRequest req) {
@@ -336,7 +339,9 @@ public class CubeController extends BasicController {
req.getBuildType(), req.isForce() || req.isForceMergeEmptySegment());
}
- /** Build/Rebuild a cube segment by source offset */
+ /**
+ * Build/Rebuild a cube segment by source offset
+ */
@RequestMapping(value = "/{cubeName}/build2", method = { RequestMethod.PUT }, produces = { "application/json" })
@ResponseBody
public JobInstance build2(@PathVariable String cubeName, @RequestBody JobBuildRequest2 req) {
@@ -355,7 +360,9 @@ public class CubeController extends BasicController {
return rebuild2(cubeName, req);
}
- /** Build/Rebuild a cube segment by source offset */
+ /**
+ * Build/Rebuild a cube segment by source offset
+ */
@RequestMapping(value = "/{cubeName}/rebuild2", method = { RequestMethod.PUT }, produces = { "application/json" })
@ResponseBody
public JobInstance rebuild2(@PathVariable String cubeName, @RequestBody JobBuildRequest2 req) {
@@ -415,7 +422,7 @@ public class CubeController extends BasicController {
/**
* Send a optimize cube segment job
*
- * @param cubeName Cube ID
+ * @param cubeName Cube ID
* @param segmentID for segment to be optimized
*/
@RequestMapping(value = "/{cubeName}/recover_segment_optimize/{segmentID}", method = { RequestMethod.PUT })
@@ -661,8 +668,8 @@ public class CubeController extends BasicController {
throw new InternalErrorException("Failed to deal with the request: " + e.getLocalizedMessage());
}
- if (!desc.getError().isEmpty()) {
- updateRequest(cubeRequest, false, Joiner.on("\n").join(desc.getError()));
+ if (desc.isBroken()) {
+ updateRequest(cubeRequest, false, desc.getErrorsAsString());
return cubeRequest;
}
@@ -959,6 +966,7 @@ public class CubeController extends BasicController {
/**
* Initiate the very beginning of a streaming cube. Will seek the latest offests of each partition from streaming
* source (kafka) and record in the cube descriptor; In the first build job, it will use these offests as the start point.
+ *
* @param cubeName
* @return
*/
http://git-wip-us.apache.org/repos/asf/kylin/blob/59d50646/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 186b1ed..c01308d 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
@@ -203,8 +203,8 @@ public class CubeService extends BasicService implements InitializingBean {
createdDesc = getCubeDescManager().createCubeDesc(desc);
- if (!createdDesc.getError().isEmpty()) {
- throw new BadRequestException(createdDesc.getErrorMsg());
+ if (createdDesc.isBroken()) {
+ throw new BadRequestException(createdDesc.getErrorsAsString());
}
int cuboidCount = CuboidCLI.simulateCuboidGeneration(createdDesc, false);
@@ -633,8 +633,8 @@ public class CubeService extends BasicService implements InitializingBean {
throw new ForbiddenException(msg.getUPDATE_CUBE_NO_RIGHT());
}
- if (!desc.getError().isEmpty()) {
- throw new BadRequestException(desc.getErrorMsg());
+ if (desc.isBroken()) {
+ throw new BadRequestException(desc.getErrorsAsString());
}
return desc;
@@ -683,8 +683,8 @@ public class CubeService extends BasicService implements InitializingBean {
throw new ForbiddenException(msg.getUPDATE_CUBE_NO_RIGHT());
}
- if (!desc.getError().isEmpty()) {
- throw new BadRequestException(desc.getErrorMsg());
+ if (desc.isBroken()) {
+ throw new BadRequestException(desc.getErrorsAsString());
}
return desc;