I made a fix on the staging branch, the binary package on download page need sometime to be updated; if you couldn’t wait, please pull the latest code, checkout staging branch, and then run ./script/package.sh to build a new package; Please let me know if still have problem; this is the JIRA for this problem:
https://issues.apache.org/jira/browse/KYLIN-642 On 3/17/15, 9:59 AM, "dong wang" <[email protected]> wrote: >many thanks, the issue may not that be difficult but very very urgent >since it affects the rollback feature > >2015-03-17 9:50 GMT+08:00 Shi, Shaofeng <[email protected]>: > >> Okay, I was able to reproduce this problem; will look into it now; >> >> On 3/17/15, 9:45 AM, "dong wang" <[email protected]> wrote: >> >> >Shaofeng, I think mine is a little different from what you mentioned: >> >1, the partition date column can be recognized correctly >> >2, the segment is built successfully already >> >3, I just refresh the LATEST successful segment due to some base data >> >changes >> > >> >2015-03-16 22:03 GMT+08:00 Shi, Shaofeng <[email protected]>: >> > >> >> Hi Dong, which version of the Kylin build that you deployed? >> >> >> >> In last week we found a bug which will cause Kylin fail to allocate a >> >>new >> >> a segment; Kylin will report error saying that the startDate is not >> >> matched with expectation; Here is the JIRA: >> >> >> >> https://issues.apache.org/jira/browse/KYLIN-628 >> >> >> >> If you¹re using Kylin¹s binary package, please update to the latest >>one >> >>on >> >> https://kylin.incubator.apache.org/download/ >> >> If you¹re running from source code, please pull the latest code on >> >>staging >> >> branch; >> >> >> >> On 3/16/15, 7:40 PM, "dong wang" <[email protected]> wrote: >> >> >> >> >since the following codes pass invalid startdate and enddate, which >> >>leads >> >> >to the issue >> >> > >> >> > public CubeSegment appendSegments(CubeInstance cube, long endDate) >> >> >throws >> >> >IOException { >> >> > checkNoBuildingSegment(cube); >> >> > >> >> > CubeSegment newSegment; >> >> > if >> >> >>>(cube.getDescriptor().getModel().getPartitionDesc().isPartitioned()) { >> >> > long startDate = >>calculateStartDateForAppendSegment(cube); >> >> > newSegment = newSegment(cube, startDate, endDate); >> >> > } else { >> >> > newSegment = newSegment(cube, 0, Long.MAX_VALUE); >> >> > } >> >> > >> >> > validateNewSegments(cube, newSegment); >> >> > cube.getSegments().add(newSegment); >> >> > Collections.sort(cube.getSegments()); >> >> > updateCube(cube); >> >> > >> >> > return newSegment; >> >> > } >> >> > >> >> >2015-03-16 19:38 GMT+08:00 dong wang <[email protected]>: >> >> > >> >> >> The related codes, since I'm not that clear about the logic it >>should >> >> >>be: >> >> >> >> >> >> private CubeSegment newSegment(CubeInstance cubeInstance, long >> >> >> startDate, long endDate) { >> >> >> if (startDate >= endDate) >> >> >> throw new IllegalArgumentException("New segment range >> >> >>invalid, >> >> >> start date must be earlier than end date, " + startDate + " < " + >> >> >>endDate); >> >> >> >> >> >> CubeSegment segment = new CubeSegment(); >> >> >> String incrementalSegName = >> >> >>CubeSegment.getSegmentName(startDate, >> >> >> endDate); >> >> >> segment.setUuid(UUID.randomUUID().toString()); >> >> >> segment.setName(incrementalSegName); >> >> >> Date creatTime = new Date(); >> >> >> segment.setCreateTimeUTC(creatTime.getTime()); >> >> >> segment.setDateRangeStart(startDate); >> >> >> segment.setDateRangeEnd(endDate); >> >> >> segment.setStatus(SegmentStatusEnum.NEW); >> >> >> >> >>segment.setStorageLocationIdentifier(generateStorageLocation()); >> >> >> >> >> >> segment.setCubeInstance(cubeInstance); >> >> >> >> >> >> segment.validate(); >> >> >> return segment; >> >> >> } >> >> >> >> >> >> 2015-03-16 19:29 GMT+08:00 dong wang <[email protected]>: >> >> >> >> >> >>> more notes. this segment to be refreshed is built sccessful >>first, >> >> >>>then, >> >> >>> I plan to refresh it due to some incorrect data. >> >> >>> >> >> >>> 2015-03-16 19:25 GMT+08:00 dong wang <[email protected]>: >> >> >>> >> >> >>>> watched with firebug, the parameters pass to the backend seem >>to be >> >> >>>> CORRECT as below: >> >> >>>> >> >> >>>> {buildType: "BUILD", startTime: 1426377600000, endTime: >> >>1426464000000} >> >> >>>> >> >> >>>> 2015-03-16 19:15 GMT+08:00 dong wang <[email protected]>: >> >> >>>> >> >> >>>>> segment detail page shows: >> >> >>>>> >> >> >>>>> Start Date (Include) 2015-03-15 00:00:00 >> >> >>>>> End Date (Exclude) 2015-03-16 00:00:00 >> >> >>>>> >> >> >>>>> 2015-03-16 19:11 GMT+08:00 dong wang <[email protected]>: >> >> >>>>> >> >> >>>>>> The latest segment is the newest one which contains today's >>data, >> >> >>>>>>due >> >> >>>>>> to some incorrect data, I want to refresh the segment, >>however, >> >>when >> >> >>>>>> cube->actions->refresh->select the latest segment, then the >> >> >>>>>>following error >> >> >>>>>> occurs: >> >> >>>>>> >> >> >>>>>> New segment range invalid, start date must be earlier than end >> >>date, >> >> >>>>>> 1426464000000 < 1426464000000 >> >> >>>>>> >> >> >>>>> >> >> >>>>> >> >> >>>> >> >> >>> >> >> >> >> >> >> >> >> >>
