[ https://issues.apache.org/jira/browse/KYLIN-1934?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15427672#comment-15427672 ]
Zhong Yanghong commented on KYLIN-1934: --------------------------------------- The logic in method moveNext() may be better like follows: public boolean moveNext() throws IOException { //Get a non-empty dictionary while (curKey > curDict.getMaxId()) { curDictIndex++; if (curDictIndex >= dictionaryList.size()) { curValue = null; return false; } else { curDict = dictionaryList.get(curDictIndex); curKey = curDict.getMinId(); } } //Get the current value and increase the curKey byte[] buffer = new byte[curDict.getSizeOfValue()]; int size = curDict.getValueBytesFromId(curKey++, buffer, 0); curValue = Bytes.copy(buffer, 0, size); return true; } > 'Value not exist' During Cube Merging Caused by Empty Dict > ---------------------------------------------------------- > > Key: KYLIN-1934 > URL: https://issues.apache.org/jira/browse/KYLIN-1934 > Project: Kylin > Issue Type: Bug > Components: Job Engine > Affects Versions: v1.5.4 > Reporter: Yerui Sun > Assignee: Yerui Sun > Priority: Critical > Fix For: v1.5.4 > > Attachments: KYLIN-1934.patch > > > When cube merge, new dictionary will be created which consists of all values > in old dictionaries. > The values in old dicts is enumerated by MultipleDictionaryValueEnumerator. > However, if the first dict is empty, the Enumerator.moveNext() will return > false directly and ignore all values in other dicts, made the new dict is > also empty. > The cube merging will be failed because no values contained in the new dict. > Not sure whether this issue related with KYLIN-1834 or not. -- This message was sent by Atlassian JIRA (v6.3.4#6332)