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;