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 <hit_la...@126.com> 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; }