This is an automated email from the ASF dual-hosted git repository.
nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push:
new 9ae2bd1 KYLIN-3628 Fix regression bug
9ae2bd1 is described below
commit 9ae2bd17489e87efacd7b177735c9ddc8e03e09f
Author: XiaoxiangYu <[email protected]>
AuthorDate: Mon Sep 23 10:50:50 2019 +0800
KYLIN-3628 Fix regression bug
Previous code change will cause NPE for "SELECT * from DIMENSION_TABLE"
when dimension table name use alias.
---
.../java/org/apache/kylin/cube/CubeManager.java | 36 ++++++++++++----------
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
index 86e989a..7ad4dd3 100755
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -1235,31 +1235,35 @@ public class CubeManager implements
IRealizationProvider {
public CubeInstance findLatestSnapshot(List<RealizationEntry>
realizationEntries, String lookupTableName,
CubeInstance cubeInstance) {
CubeInstance cube = null;
- if (!realizationEntries.isEmpty()) {
- long maxBuildTime = Long.MIN_VALUE;
- RealizationRegistry registry =
RealizationRegistry.getInstance(config);
- for (RealizationEntry entry : realizationEntries) {
- IRealization realization =
registry.getRealization(entry.getType(), entry.getRealization());
- if (realization != null && realization.isReady() &&
realization instanceof CubeInstance) {
- CubeInstance current = (CubeInstance) realization;
- if (checkMeetSnapshotTable(current, lookupTableName)) {
- CubeSegment segment = current.getLatestReadySegment();
- if (segment != null) {
- long latestBuildTime = segment.getLastBuildTime();
- if (latestBuildTime > maxBuildTime) {
- maxBuildTime = latestBuildTime;
- cube = current;
+ try {
+ if (!realizationEntries.isEmpty()) {
+ long maxBuildTime = Long.MIN_VALUE;
+ RealizationRegistry registry =
RealizationRegistry.getInstance(config);
+ for (RealizationEntry entry : realizationEntries) {
+ IRealization realization =
registry.getRealization(entry.getType(), entry.getRealization());
+ if (realization != null && realization.isReady() &&
realization instanceof CubeInstance) {
+ CubeInstance current = (CubeInstance) realization;
+ if (checkMeetSnapshotTable(current, lookupTableName)) {
+ CubeSegment segment =
current.getLatestReadySegment();
+ if (segment != null) {
+ long latestBuildTime =
segment.getLastBuildTime();
+ if (latestBuildTime > maxBuildTime) {
+ maxBuildTime = latestBuildTime;
+ cube = current;
+ }
}
}
}
}
}
+ } catch (Exception e) {
+ logger.info("Unexpected error.", e);
}
if (!cubeInstance.equals(cube)) {
logger.debug("Picked cube {} over {} as it provides a more recent
snapshot of the lookup table {}", cube,
cubeInstance, lookupTableName);
}
- return cube;
+ return cube == null ? cubeInstance : cube;
}
/**
@@ -1274,7 +1278,7 @@ public class CubeManager implements IRealizationProvider {
lookupTbl = strArr[strArr.length - 1];
}
for (DimensionDesc dimensionDesc :
toCheck.getDescriptor().getDimensions()) {
- if (dimensionDesc.getTable().equalsIgnoreCase(lookupTbl)) {
+ if
(dimensionDesc.getTableRef().getTableName().equalsIgnoreCase(lookupTbl)) {
checkRes = true;
break;
}