From 0a17c8805c061bf3f1e668d1c6ba8b6b9dc33bfa Mon Sep 17 00:00:00 2001 From: kangkaisen Date: Mon, 11 Sep 2017 14:59:15 +0800 Subject: [PATCH] KYLIN-2994 Handle NPE when load dict in DictionaryManager --- .../src/main/java/org/apache/kylin/dict/DictionaryManager.java | 4 ++++ .../java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java index e97899c9f..232f0ea55 100755 --- a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java +++ b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java @@ -115,6 +115,10 @@ public class DictionaryManager { public DictionaryInfo getDictionaryInfo(final String resourcePath) throws IOException { try { + //when all the value for this column is NULL, the resourcePath will be NULL + if (resourcePath == null) { + return NONE_INDICATOR; + } DictionaryInfo result = dictCache.get(resourcePath); if (result == NONE_INDICATOR) { return null; diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java index 2c85a2898..255315ac1 100755 --- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java +++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java @@ -163,6 +163,11 @@ public class MergeCuboidMapper extends KylinMapper { DictionaryManager dictMgr = DictionaryManager.getInstance(config); Dictionary mergedDict = dictMgr.getDictionary(mergedCubeSegment.getDictResPath(col)); + // handle the dict of all merged segments is null + if (mergedDict == null) { + continue; + } + Dictionary sourceDict; // handle the column that all records is null if (sourceCubeSegment.getDictionary(col) == null) { -- 2.13.6 (Apple Git-96)