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 2016/10/13 10:55:24 UTC
kylin git commit: KYLIN-1967 Skip empty cube segment
Repository: kylin
Updated Branches:
refs/heads/yang21 756170412 -> 75de81b3a
KYLIN-1967 Skip empty cube segment
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/75de81b3
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/75de81b3
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/75de81b3
Branch: refs/heads/yang21
Commit: 75de81b3a610e8b04a5415ced9fbb8b2bee769a7
Parents: 7561704
Author: Li Yang <li...@apache.org>
Authored: Thu Oct 13 18:55:11 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Oct 13 18:55:11 2016 +0800
----------------------------------------------------------------------
.../kylin/storage/gtrecord/CubeSegmentScanner.java | 2 ++
.../kylin/storage/gtrecord/GTCubeStorageQueryBase.java | 11 ++++++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/75de81b3/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeSegmentScanner.java
----------------------------------------------------------------------
diff --git a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeSegmentScanner.java b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeSegmentScanner.java
index 926ba48..6e19c09 100644
--- a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeSegmentScanner.java
+++ b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeSegmentScanner.java
@@ -69,6 +69,8 @@ public class CubeSegmentScanner implements IGTScanner {
CubeScanRangePlanner scanRangePlanner;
try {
scanRangePlanner = new CubeScanRangePlanner(cubeSeg, cuboid, filter, dimensions, groups, metrics, context);
+ } catch (RuntimeException e) {
+ throw e;
} catch (Exception e) {
throw new RuntimeException(e);
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/75de81b3/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
----------------------------------------------------------------------
diff --git a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
index 4ba134d..fa23be1 100644
--- a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
+++ b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
@@ -133,7 +133,16 @@ public abstract class GTCubeStorageQueryBase implements IStorageQuery {
continue;
}
}
- scanner = new CubeSegmentScanner(cubeSeg, cuboid, dimensionsD, groupsD, metrics, filterD, context, getGTStorage());
+ try {
+ scanner = new CubeSegmentScanner(cubeSeg, cuboid, dimensionsD, groupsD, metrics, filterD, context, getGTStorage());
+ } catch (IllegalArgumentException ex) {
+ // ref KYLIN-1967, real empty segment can trigger dictionary exception -- IllegalArgumentException: Value not exists!
+ if (cubeSeg.getInputRecords() == 0) {
+ logger.warn("cube segment {} input record is 0, skip it still", cubeSeg);
+ continue;
+ }
+ throw ex;
+ }
scanners.add(scanner);
}