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 2015/01/23 09:32:09 UTC

[22/50] [abbrv] incubator-kylin git commit: drop CubeIntegrityException.java

drop CubeIntegrityException.java


Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/6b996756
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/6b996756
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/6b996756

Branch: refs/heads/inverted-index
Commit: 6b996756a3fbea1cf003c15093c2f6d975a7df82
Parents: 46c9a13
Author: Li, Yang <ya...@ebay.com>
Authored: Thu Jan 22 17:40:21 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Thu Jan 22 17:40:21 2015 +0800

----------------------------------------------------------------------
 .../java/com/kylinolap/cube/CubeManager.java    | 19 ++++-----
 .../kylinolap/cube/CubeSegmentValidator.java    | 27 ++++++------
 .../cube/exception/CubeIntegrityException.java  | 33 ---------------
 .../kylinolap/cube/SegmentManagementTest.java   | 34 +++++++--------
 .../job/hadoop/cube/MergeCuboidMapperTest.java  |  3 +-
 .../rest/controller/CubeController.java         |  1 -
 .../com/kylinolap/rest/service/CubeService.java | 17 ++++----
 .../com/kylinolap/rest/service/JobService.java  | 44 +++++++++-----------
 8 files changed, 65 insertions(+), 113 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/cube/src/main/java/com/kylinolap/cube/CubeManager.java
----------------------------------------------------------------------
diff --git a/cube/src/main/java/com/kylinolap/cube/CubeManager.java b/cube/src/main/java/com/kylinolap/cube/CubeManager.java
index aabac93..be22ea0 100644
--- a/cube/src/main/java/com/kylinolap/cube/CubeManager.java
+++ b/cube/src/main/java/com/kylinolap/cube/CubeManager.java
@@ -39,7 +39,6 @@ import com.kylinolap.common.persistence.ResourceStore;
 import com.kylinolap.common.persistence.Serializer;
 import com.kylinolap.common.restclient.Broadcaster;
 import com.kylinolap.common.restclient.CaseInsensitiveStringCache;
-import com.kylinolap.cube.exception.CubeIntegrityException;
 import com.kylinolap.cube.model.CubeBuildTypeEnum;
 import com.kylinolap.cube.model.CubeDesc;
 import com.kylinolap.cube.model.DimensionDesc;
@@ -270,18 +269,18 @@ public class CubeManager implements IRealizationProvider {
         return false;
     }
 
-    public CubeSegment mergeSegments(CubeInstance cubeInstance, final long startDate, final long endDate) throws IOException, CubeIntegrityException {
+    public CubeSegment mergeSegments(CubeInstance cubeInstance, final long startDate, final long endDate) throws IOException {
         if (cubeInstance.getBuildingSegments().size() > 0) {
             throw new RuntimeException("There is already an allocating segment!");
         }
 
         if (cubeInstance.getDescriptor().getCubePartitionDesc().isPartitioned() == false) {
-            throw new CubeIntegrityException("there is no partition date column specified, only full build is supported");
+            throw new IllegalStateException("there is no partition date column specified, only full build is supported");
         }
 
         List<CubeSegment> readySegments = cubeInstance.getSegment(SegmentStatusEnum.READY);
         if (readySegments.isEmpty()) {
-            throw new CubeIntegrityException("there are no segments in ready state");
+            throw new IllegalStateException("there are no segments in ready state");
         }
         long start = Long.MAX_VALUE;
         long end = Long.MIN_VALUE;
@@ -307,7 +306,7 @@ public class CubeManager implements IRealizationProvider {
         return newSegment;
     }
 
-    public CubeSegment appendSegments(CubeInstance cubeInstance, long startDate, long endDate) throws IOException, CubeIntegrityException {
+    public CubeSegment appendSegments(CubeInstance cubeInstance, long startDate, long endDate) throws IOException {
         if (cubeInstance.getBuildingSegments().size() > 0) {
             throw new RuntimeException("There is already an allocating segment!");
         }
@@ -347,7 +346,7 @@ public class CubeManager implements IRealizationProvider {
 
     // this method goes tests only
     public void updateSegmentOnJobSucceed(CubeInstance cubeInstance, CubeBuildTypeEnum buildType, String segmentName, //
-            String jobUuid, long lastBuildTime, long sizeKB, long sourceRecordCount, long sourceRecordsSize) throws IOException, CubeIntegrityException {
+            String jobUuid, long lastBuildTime, long sizeKB, long sourceRecordCount, long sourceRecordsSize) throws IOException {
 
         List<CubeSegment> segmentsInNewStatus = cubeInstance.getSegments(SegmentStatusEnum.NEW);
         CubeSegment cubeSegment = cubeInstance.getSegmentById(jobUuid);
@@ -375,7 +374,7 @@ public class CubeManager implements IRealizationProvider {
         this.updateCube(cubeInstance);
     }
 
-    public void updateSegmentOnJobDiscard(CubeInstance cubeInstance, String segmentName) throws IOException, CubeIntegrityException {
+    public void updateSegmentOnJobDiscard(CubeInstance cubeInstance, String segmentName) throws IOException {
         for (int i = 0; i < cubeInstance.getSegments().size(); i++) {
             CubeSegment segment = cubeInstance.getSegments().get(i);
             if (segment.getName().equals(segmentName) && segment.getStatus() != SegmentStatusEnum.READY) {
@@ -485,13 +484,13 @@ public class CubeManager implements IRealizationProvider {
 
     /**
      */
-    private void validateNewSegments(CubeInstance cubeInstance, CubeBuildTypeEnum buildType, CubeSegment newSegment) throws CubeIntegrityException {
-        if (null == cubeInstance.getDescriptor().getCubePartitionDesc().getPartitionDateColumn()) {
+    private void validateNewSegments(CubeInstance cubeInstance, CubeBuildTypeEnum buildType, CubeSegment newSegment) {
+        if (cubeInstance.getDescriptor().getCubePartitionDesc().isPartitioned() == false) {
             // do nothing for non-incremental build
             return;
         }
         if (newSegment.getDateRangeEnd() <= newSegment.getDateRangeStart()) {
-            throw new CubeIntegrityException(" end date.");
+            throw new IllegalStateException(" end date.");
         }
 
         CubeSegmentValidator cubeSegmentValidator = CubeSegmentValidator.getCubeSegmentValidator(buildType);

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/cube/src/main/java/com/kylinolap/cube/CubeSegmentValidator.java
----------------------------------------------------------------------
diff --git a/cube/src/main/java/com/kylinolap/cube/CubeSegmentValidator.java b/cube/src/main/java/com/kylinolap/cube/CubeSegmentValidator.java
index 67ee275..c2c6495 100644
--- a/cube/src/main/java/com/kylinolap/cube/CubeSegmentValidator.java
+++ b/cube/src/main/java/com/kylinolap/cube/CubeSegmentValidator.java
@@ -21,7 +21,6 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 
-import com.kylinolap.cube.exception.CubeIntegrityException;
 import com.kylinolap.cube.model.CubeBuildTypeEnum;
 import com.kylinolap.cube.model.CubeDesc;
 import com.kylinolap.cube.model.CubePartitionDesc;
@@ -49,13 +48,13 @@ public abstract class CubeSegmentValidator {
         }
     }
 
-    abstract void validate(CubeInstance cubeInstance, CubeSegment newSegment) throws CubeIntegrityException;
+    abstract void validate(CubeInstance cubeInstance, CubeSegment newSegment);
 
     private static class MergeOperationValidator extends CubeSegmentValidator {
 
-        private void checkContingency(CubeInstance cubeInstance, CubeSegment newSegment) throws CubeIntegrityException {
+        private void checkContingency(CubeInstance cubeInstance, CubeSegment newSegment) {
             if (cubeInstance.getSegments().size() < 2) {
-                throw new CubeIntegrityException("No segments to merge.");
+                throw new IllegalStateException("No segments to merge.");
             }
             CubeSegment startSeg = null;
             CubeSegment endSeg = null;
@@ -69,11 +68,11 @@ public abstract class CubeSegmentValidator {
             }
 
             if (null == startSeg || null == endSeg || startSeg.getDateRangeStart() >= endSeg.getDateRangeStart()) {
-                throw new CubeIntegrityException("Invalid date range.");
+                throw new IllegalStateException("Invalid date range.");
             }
         }
 
-        private void checkLoopTableConsistency(CubeInstance cube, CubeSegment newSegment) throws CubeIntegrityException {
+        private void checkLoopTableConsistency(CubeInstance cube, CubeSegment newSegment) {
 
             DictionaryManager dictMgr = DictionaryManager.getInstance(cube.getConfig());
             List<CubeSegment> segmentList = cube.getMergingSegments(newSegment);
@@ -91,7 +90,7 @@ public abstract class CubeSegmentValidator {
                             }
                         }
                     } catch (IOException e) {
-                        throw new CubeIntegrityException("checkLoopTableConsistency not passed when allocating a new segment.");
+                        throw new IllegalStateException("checkLoopTableConsistency not passed when allocating a new segment.");
                     }
                 }
             }
@@ -102,14 +101,14 @@ public abstract class CubeSegmentValidator {
                 for (CubeSegment segment : segmentList) {
                     String temp = segment.getDictResPath(col);
                     if (temp == null) {
-                        throw new CubeIntegrityException("Dictionary is null on column: " + col + " Segment: " + segment);
+                        throw new IllegalStateException("Dictionary is null on column: " + col + " Segment: " + segment);
                     }
 
                     if (dictOfFirstSegment == null) {
                         dictOfFirstSegment = temp;
                     } else {
                         if (!dictOfFirstSegment.equalsIgnoreCase(temp)) {
-                            throw new CubeIntegrityException("Segments with different dictionaries(on lookup table) cannot be merged");
+                            throw new IllegalStateException("Segments with different dictionaries(on lookup table) cannot be merged");
                         }
                     }
                 }
@@ -124,14 +123,14 @@ public abstract class CubeSegmentValidator {
                     Collection<String> a = firstSegment.getSnapshots().values();
                     Collection<String> b = segment.getSnapshots().values();
                     if (!((a.size() == b.size()) && a.containsAll(b)))
-                        throw new CubeIntegrityException("Segments with different snapshots cannot be merged");
+                        throw new IllegalStateException("Segments with different snapshots cannot be merged");
                 }
             }
 
         }
 
         @Override
-        public void validate(CubeInstance cubeInstance, CubeSegment newSegment) throws CubeIntegrityException {
+        public void validate(CubeInstance cubeInstance, CubeSegment newSegment) {
             this.checkContingency(cubeInstance, newSegment);
             this.checkLoopTableConsistency(cubeInstance, newSegment);
         }
@@ -140,7 +139,7 @@ public abstract class CubeSegmentValidator {
     private static class BuildOperationValidator extends CubeSegmentValidator {
 
         @Override
-        void validate(CubeInstance cubeInstance, CubeSegment newSegment) throws CubeIntegrityException {
+        void validate(CubeInstance cubeInstance, CubeSegment newSegment) {
             List<CubeSegment> readySegments = cubeInstance.getSegments(SegmentStatusEnum.READY);
             CubePartitionDesc cubePartitionDesc = cubeInstance.getDescriptor().getCubePartitionDesc();
             final long initStartDate = cubePartitionDesc.isPartitioned() ? cubePartitionDesc.getPartitionDateStart() : 0;
@@ -149,13 +148,13 @@ public abstract class CubeSegmentValidator {
                 if (startDate == readySegment.getDateRangeStart() && startDate < readySegment.getDateRangeEnd()) {
                     startDate = readySegment.getDateRangeEnd();
                 } else {
-                    throw new CubeIntegrityException("there is gap in cube segments");
+                    throw new IllegalStateException("there is gap in cube segments");
                 }
             }
             if (newSegment.getDateRangeStart() == startDate && startDate < newSegment.getDateRangeEnd()) {
                 return;
             }
-            throw new CubeIntegrityException("invalid segment date range from " + newSegment.getDateRangeStart() + " to " + newSegment.getDateRangeEnd());
+            throw new IllegalStateException("invalid segment date range from " + newSegment.getDateRangeStart() + " to " + newSegment.getDateRangeEnd());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/cube/src/main/java/com/kylinolap/cube/exception/CubeIntegrityException.java
----------------------------------------------------------------------
diff --git a/cube/src/main/java/com/kylinolap/cube/exception/CubeIntegrityException.java b/cube/src/main/java/com/kylinolap/cube/exception/CubeIntegrityException.java
deleted file mode 100644
index a0ab338..0000000
--- a/cube/src/main/java/com/kylinolap/cube/exception/CubeIntegrityException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2013-2014 eBay Software Foundation
- *
- * Licensed 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 com.kylinolap.cube.exception;
-
-/**
- * @author xduo
- * 
- */
-public class CubeIntegrityException extends Exception {
-    /**
-     * @param string
-     */
-    public CubeIntegrityException(String string) {
-        super(string);
-    }
-
-    private static final long serialVersionUID = -7924187859607404390L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/cube/src/test/java/com/kylinolap/cube/SegmentManagementTest.java
----------------------------------------------------------------------
diff --git a/cube/src/test/java/com/kylinolap/cube/SegmentManagementTest.java b/cube/src/test/java/com/kylinolap/cube/SegmentManagementTest.java
index b0f2c76..2121488 100644
--- a/cube/src/test/java/com/kylinolap/cube/SegmentManagementTest.java
+++ b/cube/src/test/java/com/kylinolap/cube/SegmentManagementTest.java
@@ -23,11 +23,6 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.TimeZone;
 
-import com.kylinolap.metadata.model.SegmentStatusEnum;
-import com.kylinolap.metadata.project.ProjectInstance;
-import com.kylinolap.metadata.project.ProjectManager;
-import com.kylinolap.metadata.realization.RealizationStatusEnum;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -36,10 +31,13 @@ import org.junit.Test;
 import com.kylinolap.common.persistence.ResourceStore;
 import com.kylinolap.common.util.JsonUtil;
 import com.kylinolap.common.util.LocalFileMetadataTestCase;
-import com.kylinolap.cube.exception.CubeIntegrityException;
 import com.kylinolap.cube.model.CubeBuildTypeEnum;
 import com.kylinolap.cube.model.CubeDesc;
 import com.kylinolap.metadata.MetadataManager;
+import com.kylinolap.metadata.model.SegmentStatusEnum;
+import com.kylinolap.metadata.project.ProjectInstance;
+import com.kylinolap.metadata.project.ProjectManager;
+import com.kylinolap.metadata.realization.RealizationStatusEnum;
 
 /**
  * @author ysong1
@@ -53,10 +51,10 @@ public class SegmentManagementTest extends LocalFileMetadataTestCase {
     @Before
     public void setUp() throws Exception {
         this.createTestMetadata();
-        MetadataManager.removeInstance(this.getTestConfig());
-        CubeManager.removeInstance(this.getTestConfig());
-        ProjectManager.removeInstance(this.getTestConfig());
-        cubeMgr = CubeManager.getInstance(this.getTestConfig());
+        MetadataManager.removeInstance(getTestConfig());
+        CubeManager.removeInstance(getTestConfig());
+        ProjectManager.removeInstance(getTestConfig());
+        cubeMgr = CubeManager.getInstance(getTestConfig());
     }
 
     @After
@@ -76,7 +74,7 @@ public class SegmentManagementTest extends LocalFileMetadataTestCase {
     }
 
     @Test
-    public void testInitialAndAppend() throws ParseException, IOException, CubeIntegrityException {
+    public void testInitialAndAppend() throws ParseException, IOException {
         // create a new cube
         CubeDescManager cubeDescMgr = getCubeDescManager();
         CubeDesc desc = cubeDescMgr.getCubeDesc("test_kylin_cube_with_slr_desc");
@@ -144,7 +142,7 @@ public class SegmentManagementTest extends LocalFileMetadataTestCase {
     }
 
     @Test
-    public void testRebuildSegment() throws IOException, CubeIntegrityException {
+    public void testRebuildSegment() throws IOException {
         CubeInstance cubeInstance = cubeMgr.getCube("test_kylin_cube_with_slr_ready");
 
         // rebuild segment
@@ -174,8 +172,8 @@ public class SegmentManagementTest extends LocalFileMetadataTestCase {
         System.out.println(JsonUtil.writeValueAsIndentString(cubeInstance));
     }
 
-    @Test(expected = CubeIntegrityException.class)
-    public void testInvalidRebuild() throws IOException, CubeIntegrityException {
+    @Test(expected = IllegalStateException.class)
+    public void testInvalidRebuild() throws IOException {
         CubeInstance cubeInstance = cubeMgr.getCube("test_kylin_cube_with_slr_ready");
 
         // rebuild segment
@@ -184,7 +182,7 @@ public class SegmentManagementTest extends LocalFileMetadataTestCase {
     }
 
     @Test
-    public void testMergeSegments() throws IOException, CubeIntegrityException {
+    public void testMergeSegments() throws IOException {
         CubeInstance cubeInstance = cubeMgr.getCube("test_kylin_cube_with_slr_ready_2_segments");
 
         // merge segments
@@ -215,7 +213,7 @@ public class SegmentManagementTest extends LocalFileMetadataTestCase {
     }
 
     @Test
-    public void testNonPartitionedCube() throws ParseException, IOException, CubeIntegrityException {
+    public void testNonPartitionedCube() throws ParseException, IOException {
         // create a new cube
         CubeDescManager cubeDescMgr = getCubeDescManager();
         CubeDesc desc = cubeDescMgr.getCubeDesc("test_kylin_cube_without_slr_desc");
@@ -285,8 +283,8 @@ public class SegmentManagementTest extends LocalFileMetadataTestCase {
         System.out.println(JsonUtil.writeValueAsIndentString(cubeInstance));
     }
 
-    @Test(expected = CubeIntegrityException.class)
-    public void testInvalidAppend() throws ParseException, IOException, CubeIntegrityException {
+    @Test(expected = IllegalStateException.class)
+    public void testInvalidAppend() throws ParseException, IOException {
         // create a new cube
         CubeDescManager cubeDescMgr = getCubeDescManager();
         CubeDesc desc = cubeDescMgr.getCubeDesc("test_kylin_cube_with_slr_desc");

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/job/src/test/java/com/kylinolap/job/hadoop/cube/MergeCuboidMapperTest.java
----------------------------------------------------------------------
diff --git a/job/src/test/java/com/kylinolap/job/hadoop/cube/MergeCuboidMapperTest.java b/job/src/test/java/com/kylinolap/job/hadoop/cube/MergeCuboidMapperTest.java
index 155c3d1..97e4abc 100644
--- a/job/src/test/java/com/kylinolap/job/hadoop/cube/MergeCuboidMapperTest.java
+++ b/job/src/test/java/com/kylinolap/job/hadoop/cube/MergeCuboidMapperTest.java
@@ -36,7 +36,6 @@ import com.kylinolap.common.util.LocalFileMetadataTestCase;
 import com.kylinolap.cube.CubeInstance;
 import com.kylinolap.cube.CubeManager;
 import com.kylinolap.cube.CubeSegment;
-import com.kylinolap.cube.exception.CubeIntegrityException;
 import com.kylinolap.dict.Dictionary;
 import com.kylinolap.dict.DictionaryGenerator;
 import com.kylinolap.dict.DictionaryInfo;
@@ -152,7 +151,7 @@ public class MergeCuboidMapperTest extends LocalFileMetadataTestCase {
     }
 
     @Test
-    public void test() throws IOException, ParseException, CubeIntegrityException {
+    public void test() throws IOException, ParseException {
 
         String cubeName = "test_kylin_cube_without_slr_left_join_ready_2_segments";
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/server/src/main/java/com/kylinolap/rest/controller/CubeController.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/com/kylinolap/rest/controller/CubeController.java b/server/src/main/java/com/kylinolap/rest/controller/CubeController.java
index 5e44fa7..e6032aa 100644
--- a/server/src/main/java/com/kylinolap/rest/controller/CubeController.java
+++ b/server/src/main/java/com/kylinolap/rest/controller/CubeController.java
@@ -45,7 +45,6 @@ import com.fasterxml.jackson.databind.JsonMappingException;
 import com.kylinolap.common.util.JsonUtil;
 import com.kylinolap.cube.CubeInstance;
 import com.kylinolap.cube.CubeSegment;
-import com.kylinolap.cube.exception.CubeIntegrityException;
 import com.kylinolap.cube.model.CubeBuildTypeEnum;
 import com.kylinolap.cube.model.CubeDesc;
 import com.kylinolap.job.JobInstance;

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/server/src/main/java/com/kylinolap/rest/service/CubeService.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/com/kylinolap/rest/service/CubeService.java b/server/src/main/java/com/kylinolap/rest/service/CubeService.java
index 3a911df..45987fa 100644
--- a/server/src/main/java/com/kylinolap/rest/service/CubeService.java
+++ b/server/src/main/java/com/kylinolap/rest/service/CubeService.java
@@ -48,7 +48,6 @@ import com.kylinolap.cube.CubeInstance;
 import com.kylinolap.cube.CubeManager;
 import com.kylinolap.cube.CubeSegment;
 import com.kylinolap.cube.cuboid.CuboidCLI;
-import com.kylinolap.cube.exception.CubeIntegrityException;
 import com.kylinolap.cube.model.CubeDesc;
 import com.kylinolap.job.common.HadoopShellExecutable;
 import com.kylinolap.job.cube.CubingJob;
@@ -131,7 +130,7 @@ public class CubeService extends BasicService {
     }
 
     @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN)
-    public CubeInstance updateCubeCost(String cubeName, int cost) throws IOException, CubeIntegrityException {
+    public CubeInstance updateCubeCost(String cubeName, int cost) throws IOException {
         CubeInstance cube = getCubeManager().getCube(cubeName);
         if (cube == null) {
             throw new IOException("Cannot find cube " + cubeName);
@@ -243,13 +242,11 @@ public class CubeService extends BasicService {
             return updatedCubeDesc;
         } catch (IOException e) {
             throw new InternalErrorException("Failed to deal with the request.", e);
-        } catch (CubeIntegrityException e) {
-            throw new InternalErrorException("Failed to deal with the request.", e);
         }
     }
 
     @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#cube, 'ADMINISTRATION') or hasPermission(#cube, 'MANAGEMENT')")
-    public void deleteCube(CubeInstance cube) throws IOException, JobException, CubeIntegrityException {
+    public void deleteCube(CubeInstance cube) throws IOException, JobException {
         final List<CubingJob> cubingJobs = listAllCubingJobs(cube.getName(), null, EnumSet.of(ExecutableState.READY, ExecutableState.RUNNING));
         if (!cubingJobs.isEmpty()) {
             throw new JobException("The cube " + cube.getName() + " has running job, please discard it and try again.");
@@ -309,7 +306,7 @@ public class CubeService extends BasicService {
      */
     @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#cube, 'ADMINISTRATION') or hasPermission(#cube, 'OPERATION') or hasPermission(#cube, 'MANAGEMENT')")
     @Caching(evict = { @CacheEvict(value = QueryController.SUCCESS_QUERY_CACHE, allEntries = true), @CacheEvict(value = QueryController.EXCEPTION_QUERY_CACHE, allEntries = true) })
-    public CubeInstance purgeCube(CubeInstance cube) throws IOException, CubeIntegrityException, JobException {
+    public CubeInstance purgeCube(CubeInstance cube) throws IOException, JobException {
         String cubeName = cube.getName();
 
         RealizationStatusEnum ostatus = cube.getStatus();
@@ -336,7 +333,7 @@ public class CubeService extends BasicService {
      */
     @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#cube, 'ADMINISTRATION') or hasPermission(#cube, 'OPERATION') or hasPermission(#cube, 'MANAGEMENT')")
     @Caching(evict = { @CacheEvict(value = QueryController.SUCCESS_QUERY_CACHE, allEntries = true), @CacheEvict(value = QueryController.EXCEPTION_QUERY_CACHE, allEntries = true) })
-    public CubeInstance disableCube(CubeInstance cube) throws IOException, CubeIntegrityException, JobException {
+    public CubeInstance disableCube(CubeInstance cube) throws IOException, JobException {
         String cubeName = cube.getName();
 
         RealizationStatusEnum ostatus = cube.getStatus();
@@ -363,7 +360,7 @@ public class CubeService extends BasicService {
      * @throws JobException
      */
     @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#cube, 'ADMINISTRATION') or hasPermission(#cube, 'OPERATION')  or hasPermission(#cube, 'MANAGEMENT')")
-    public CubeInstance enableCube(CubeInstance cube) throws IOException, CubeIntegrityException, JobException {
+    public CubeInstance enableCube(CubeInstance cube) throws IOException, JobException {
         String cubeName = cube.getName();
 
         RealizationStatusEnum ostatus = cube.getStatus();
@@ -505,7 +502,7 @@ public class CubeService extends BasicService {
 
 
     @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#cube, 'ADMINISTRATION') or hasPermission(#cube, 'OPERATION')  or hasPermission(#cube, 'MANAGEMENT')")
-    public void updateCubeNotifyList(CubeInstance cube, List<String> notifyList) throws IOException, CubeIntegrityException {
+    public void updateCubeNotifyList(CubeInstance cube, List<String> notifyList) throws IOException {
         CubeDesc desc = cube.getDescriptor();
         desc.setNotifyList(notifyList);
         getCubeDescManager().updateCubeDesc(desc);
@@ -527,7 +524,7 @@ public class CubeService extends BasicService {
      * @throws JobException
      * @throws CubeIntegrityException
      */
-    private void releaseAllSegments(CubeInstance cube) throws IOException, JobException, CubeIntegrityException {
+    private void releaseAllSegments(CubeInstance cube) throws IOException, JobException {
         final List<CubingJob> cubingJobs = listAllCubingJobs(cube.getName(), null);
         for (CubingJob cubingJob : cubingJobs) {
             final ExecutableState status = cubingJob.getStatus();

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6b996756/server/src/main/java/com/kylinolap/rest/service/JobService.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/com/kylinolap/rest/service/JobService.java b/server/src/main/java/com/kylinolap/rest/service/JobService.java
index 60583c7..4d3b52c 100644
--- a/server/src/main/java/com/kylinolap/rest/service/JobService.java
+++ b/server/src/main/java/com/kylinolap/rest/service/JobService.java
@@ -35,24 +35,22 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import com.kylinolap.cube.CubeInstance;
 import com.kylinolap.cube.CubeSegment;
-import com.kylinolap.cube.exception.CubeIntegrityException;
 import com.kylinolap.cube.model.CubeBuildTypeEnum;
 import com.kylinolap.job.JobInstance;
-import com.kylinolap.job.constant.JobStatusEnum;
-import com.kylinolap.job.constant.JobStepStatusEnum;
-import com.kylinolap.job.engine.JobEngineConfig;
-import com.kylinolap.job.exception.JobException;
 import com.kylinolap.job.common.HadoopShellExecutable;
 import com.kylinolap.job.common.MapReduceExecutable;
 import com.kylinolap.job.common.ShellExecutable;
+import com.kylinolap.job.constant.JobStatusEnum;
+import com.kylinolap.job.constant.JobStepStatusEnum;
 import com.kylinolap.job.cube.CubingJob;
 import com.kylinolap.job.cube.CubingJobBuilder;
+import com.kylinolap.job.engine.JobEngineConfig;
+import com.kylinolap.job.exception.JobException;
 import com.kylinolap.job.execution.ExecutableState;
 import com.kylinolap.job.execution.Output;
 import com.kylinolap.job.impl.threadpool.AbstractExecutable;
 import com.kylinolap.metadata.model.SegmentStatusEnum;
 import com.kylinolap.rest.constant.Constant;
-import com.kylinolap.rest.exception.InternalErrorException;
 
 /**
  * @author ysong1
@@ -131,25 +129,21 @@ public class JobService extends BasicService {
             }
         }
 
-        try {
-            CubingJob job;
-            CubingJobBuilder builder = (CubingJobBuilder) CubingJobBuilder.newBuilder().setJobEnginConfig(new JobEngineConfig(getConfig())).setSubmitter(submitter);
-            if (buildType == CubeBuildTypeEnum.BUILD) {
-                CubeSegment newSeg = getCubeManager().appendSegments(cube, startDate, endDate);
-                builder.setSegment(newSeg);
-                job = builder.buildJob();
-            } else if (buildType == CubeBuildTypeEnum.MERGE) {
-                CubeSegment newSeg = getCubeManager().mergeSegments(cube, startDate, endDate);
-                builder.setSegment(newSeg);
-                job = builder.mergeJob();
-            } else {
-                throw new JobException("invalid build type:" + buildType);
-            }
-            getExecutableManager().addJob(job);
-            return parseToJobInstance(job);
-        } catch (CubeIntegrityException e) {
-            throw new InternalErrorException(e.getLocalizedMessage(), e);
+        CubingJob job;
+        CubingJobBuilder builder = (CubingJobBuilder) CubingJobBuilder.newBuilder().setJobEnginConfig(new JobEngineConfig(getConfig())).setSubmitter(submitter);
+        if (buildType == CubeBuildTypeEnum.BUILD) {
+            CubeSegment newSeg = getCubeManager().appendSegments(cube, startDate, endDate);
+            builder.setSegment(newSeg);
+            job = builder.buildJob();
+        } else if (buildType == CubeBuildTypeEnum.MERGE) {
+            CubeSegment newSeg = getCubeManager().mergeSegments(cube, startDate, endDate);
+            builder.setSegment(newSeg);
+            job = builder.mergeJob();
+        } else {
+            throw new JobException("invalid build type:" + buildType);
         }
+        getExecutableManager().addJob(job);
+        return parseToJobInstance(job);
     }
 
     public JobInstance getJobInstance(String uuid) throws IOException, JobException {
@@ -248,7 +242,7 @@ public class JobService extends BasicService {
     }
 
     @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#job, 'ADMINISTRATION') or hasPermission(#job, 'OPERATION') or hasPermission(#job, 'MANAGEMENT')")
-    public JobInstance cancelJob(String jobId) throws IOException, JobException, CubeIntegrityException {
+    public JobInstance cancelJob(String jobId) throws IOException, JobException {
         //        CubeInstance cube = this.getCubeManager().getCube(job.getRelatedCube());
         //        for (BuildCubeJob cubeJob: listAllCubingJobs(cube.getName(), null, EnumSet.of(ExecutableState.READY, ExecutableState.RUNNING))) {
         //            getExecutableManager().stopJob(cubeJob.getId());