handle cube signature inconsistency issue with more friendly messsage
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0e6e5007 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0e6e5007 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0e6e5007 Branch: refs/heads/yang23-hbase0.98 Commit: 0e6e5007df2c5c80ace079a8c177e66b60f04c0f Parents: 627af9f Author: Hongbin Ma <mahong...@apache.org> Authored: Mon Mar 13 21:22:01 2017 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Mon Mar 13 21:22:01 2017 +0800 ---------------------------------------------------------------------- build/bin/metastore.sh | 5 +++++ .../main/java/org/apache/kylin/rest/service/CubeService.java | 8 ++++---- .../main/java/org/apache/kylin/rest/service/JobService.java | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/0e6e5007/build/bin/metastore.sh ---------------------------------------------------------------------- diff --git a/build/bin/metastore.sh b/build/bin/metastore.sh index d045ca6..cbce279 100755 --- a/build/bin/metastore.sh +++ b/build/bin/metastore.sh @@ -87,6 +87,11 @@ then ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.common.persistence.ResourceTool reset +elif [ "$1" == "refresh-cube-signature" ] +then + + ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.cube.cli.CubeSignatureRefresher + elif [ "$1" == "clean" ] then http://git-wip-us.apache.org/repos/asf/kylin/blob/0e6e5007/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 a28cedb..9aa7b2a 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 @@ -337,7 +337,7 @@ public class CubeService extends BasicService { } if (cube.getSegments(SegmentStatusEnum.READY).size() == 0) { - throw new InternalErrorException("Cube " + cubeName + " dosen't contain any READY segment"); + throw new InternalErrorException("Cube " + cubeName + " doesn't contain any READY segment"); } final List<CubingJob> cubingJobs = jobService.listAllCubingJobs(cube.getName(), null, EnumSet.of(ExecutableState.READY, ExecutableState.RUNNING)); @@ -345,7 +345,7 @@ public class CubeService extends BasicService { throw new JobException("Enable is not allowed with a running job."); } if (!cube.getDescriptor().checkSignature()) { - throw new IllegalStateException("Inconsistent cube desc signature for " + cube.getDescriptor()); + throw new IllegalStateException("Inconsistent cube desc signature for " + cube.getDescriptor() + ", if it's right after a upgrade, please try 'Edit CubeDesc' to delete the 'signature' field. Or use 'bin/metastore.sh refresh-cube-signature' to batch refresh all cubes' signatures"); } try { @@ -444,8 +444,8 @@ public class CubeService extends BasicService { } } - if(toDelete == null){ - throw new IllegalArgumentException("Cannot find segment '" + segmentName +"'"); + if (toDelete == null) { + throw new IllegalArgumentException("Cannot find segment '" + segmentName + "'"); } if (toDelete.getStatus() != SegmentStatusEnum.READY) { http://git-wip-us.apache.org/repos/asf/kylin/blob/0e6e5007/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java ---------------------------------------------------------------------- diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java index 893d866..9618be1 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java +++ b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java @@ -318,7 +318,7 @@ public class JobService extends BasicService implements InitializingBean { private void checkCubeDescSignature(CubeInstance cube) { if (!cube.getDescriptor().checkSignature()) - throw new IllegalStateException("Inconsistent cube desc signature for " + cube.getDescriptor()); + throw new IllegalStateException("Inconsistent cube desc signature for " + cube.getDescriptor() + ", if it's right after a upgrade, please try 'Edit CubeDesc' to delete the 'signature' field. Or use 'bin/metastore.sh refresh-cube-signature' to batch refresh all cubes' signatures"); } public JobInstance getJobInstance(String uuid) throws IOException, JobException {