You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kylin.apache.org by ketan dikshit <kd...@yahoo.com.INVALID> on 2017/12/21 09:36:41 UTC
Auto merge not working on Kylin 2.2
Hi Guys,
I am using Kylin 2.2 and getting some issues with Kylin auto merge.
The error log in kylin.log is here:
2017-12-21 08:31:18,811 INFO [Thread-50937] service.CubeService:552 : checking keepCubeRetention
2017-12-21 08:31:18,811 DEBUG [Thread-50937] model.Segments:201 : Cube publishers_v4 has 1 building segments
2017-12-21 08:31:18,811 ERROR [Thread-50937] service.CacheService:87 : Error in updateOnNewSegmentReady()
java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76)
at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.java:544)
at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(CubeService.java:601)
at org.apache.kylin.rest.service.CubeService.updateOnNewSegmentReady(CubeService.java:545)
at org.apache.kylin.rest.service.CubeService$$FastClassBySpringCGLIB$$17a07c0e.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringCGLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
at org.apache.kylin.rest.service.CacheService$1$1.run(CacheService.java:85)
Auto Merge Thresholds
8 (Hours)
1 (Days)
7 (Days)
15 (Days)
As I see inside the code, I see,
private void mergeCubeSegment(String cubeName) {
CubeInstance cube = getCubeManager().getCube(cubeName);
if (!cube.needAutoMerge()) {
return;
}
synchronized (CubeService.class) {
try {
cube = getCubeManager().getCube(cubeName);
SegmentRange offsets = cube.autoMergeCubeSegments();
if (offsets != null) {
CubeSegment newSeg = getCubeManager().mergeSegments(cube, null, offsets, true);
logger.debug("Will submit merge job on " + newSeg);
DefaultChainedExecutable job = EngineFactory.createBatchMergeJob(newSeg, "SYSTEM");
getExecutableManager().addJob(job);
} else {
logger.debug("Not ready for merge on cube " + cubeName);
}
} catch (IOException e) {
logger.error("Failed to auto merge cube " + cubeName, e);
}
}
}
ie; getCubeManager().mergeSegments(cube, null, offsets, true); is passing the TSRange as ‘null’;
to CubeManager:public CubeSegment mergeSegments(CubeInstance cube, TSRange tsRange, SegmentRange segRange, boolean force) method;
which is defined as:
if (cube.getSegments().isEmpty())
throw new IllegalArgumentException("Cube " + cube + " has no segments");
checkInputRanges(tsRange, segRange);
checkBuildingSegment(cube);
checkCubeIsPartitioned(cube);
if (cube.getSegments().getFirstSegment().isOffsetCube()) {
// offset cube, merge by date range?
if (segRange == null && tsRange != null) {
Pair<CubeSegment, CubeSegment> pair = cube.getSegments(SegmentStatusEnum.READY)
.findMergeOffsetsByDateRange(tsRange, Long.MAX_VALUE);
if (pair == null)
throw new IllegalArgumentException("Find no segments to merge by " + tsRange + " for cube " + cube);
segRange = new SegmentRange(pair.getFirst().getSegRange().start, pair.getSecond().getSegRange().end);
}
tsRange = null;
Preconditions.checkArgument(segRange != null);
} else {
segRange = null;
Preconditions.checkArgument(tsRange != null);
}
In my case, this is getting invoked,
else {
segRange = null;
Preconditions.checkArgument(tsRange != null);
}
and as we have passed in tsRange as NULL , so we get this exception:
java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76)
at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.java:544)
at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(CubeService.java:601)
at org.apache.kylin.rest.service.CubeService.updateOnNewSegmentReady(CubeService.java:545)
at org.apache.kylin.rest.service.CubeService$$FastClassBySpringCGLIB$$17a07c0e.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringCGLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
at org.apache.kylin.rest.service.CacheService$1$1.run(CacheService.java:85)
And the auto merge fails.
Let me know in case I am missing on something here, or a fix maybe.
Thanks,
Ketan
Re: Auto merge not working on Kylin 2.2
Posted by ketan dikshit <kd...@yahoo.com.INVALID>.
Yes, Thanks,I did something similar that time to get it to work.Actually we added some more functionality in there, so couldn't share the patch.
Ok, So this will go into 2.3. I will upgrade once thats out !!
Thank You,
Cheers,
Ketan Dikshit
kdcool6932@yahoo.com
On Wednesday, January 17, 2018, 4:41:29 PM GMT+5:30, 杨浩 <ya...@gmail.com> wrote:
It seems KYLIN-3165 <https://issues.apache.org/jira/browse/KYLIN-3165>. I
think you can merge it to KYLIN-2.2.0 to solve the problem.
2017-12-26 14:23 GMT+08:00 ketan dikshit <kd...@yahoo.com.invalid>:
> Hi ShaoFeng,
> We are using Hive as data source for pulling in fact data for cube
> building,
> Also the commit id as I see is: 0169dc0950fc278239413cfb71313ff9ae8edf7d
>
> Will also investigate myself, and try to resolve the same and share a
> patch.
>
> Thanks,
> Ketan
>
> > On 22-Dec-2017, at 7:41 PM, ShaoFeng Shi <sh...@apache.org> wrote:
> >
> > Hi Ketan,
> >
> > Is your Cube data from Hive or Kafka?
> >
> > The line number seems couldn't match with the Kylin 2.2 source code; Can
> > you double confirm the Kylin version? In Kylin installation folder, there
> > is a commit id sha file, please provide that file content to us so we can
> > exactly match the line numbers. Thanks.
> >
> > 2017-12-22 18:12 GMT+08:00 ShaoFeng Shi <sh...@apache.org>:
> >
> >> It should be a bug; I took a quick look but didn't find the root cause
> >> (very busy in the year-end). Could you please investigate it and then
> >> contribute a patch? Thanks!
> >>
> >> 2017-12-22 16:41 GMT+08:00 ketan dikshit <kd...@yahoo.com.invalid>
> :
> >>
> >>> Hi Guys,
> >>> Any update on this, as I see this is a bug or ?
> >>>
> >>> We are passing in null as TSRange and the check
> >>> Preconditions.checkArgument(tsRange != null); is always failing.
> >>>
> >>> Help would be appreciated.
> >>>
> >>> Thanks,
> >>> Ketan
> >>>
> >>>> On 21-Dec-2017, at 3:06 PM, ketan dikshit
> <kd...@yahoo.com.INVALID>
> >>> wrote:
> >>>>
> >>>> Hi Guys,
> >>>> I am using Kylin 2.2 and getting some issues with Kylin auto merge.
> >>>> The error log in kylin.log is here:
> >>>>
> >>>> 2017-12-21 08:31:18,811 INFO [Thread-50937] service.CubeService:552 :
> >>> checking keepCubeRetention
> >>>> 2017-12-21 08:31:18,811 DEBUG [Thread-50937] model.Segments:201 : Cube
> >>> publishers_v4 has 1 building segments
> >>>> 2017-12-21 08:31:18,811 ERROR [Thread-50937] service.CacheService:87 :
> >>> Error in updateOnNewSegmentReady()
> >>>> java.lang.IllegalArgumentException
> >>>> at com.google.common.base.Preconditions.checkArgument(Precondit
> >>> ions.java:76)
> >>>> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
> >>> java:544)
> >>>> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
> >>> ubeService.java:601)
> >>>> at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
> >>> Ready(CubeService.java:545)
> >>>> at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
> >>> CGLIB$$17a07c0e.invoke(<generated>)
> >>>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
> >>> xy.java:204)
> >>>> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
> >>> edInterceptor.intercept(CglibAopProxy.java:669)
> >>>> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
> >>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> >>>> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
> >>> ice.java:85)
> >>>>
> >>>>
> >>>> Auto Merge Thresholds
> >>>> 8 (Hours)
> >>>> 1 (Days)
> >>>> 7 (Days)
> >>>> 15 (Days)
> >>>>
> >>>>
> >>>> As I see inside the code, I see,
> >>>> private void mergeCubeSegment(String cubeName) {
> >>>> CubeInstance cube = getCubeManager().getCube(cubeName);
> >>>> if (!cube.needAutoMerge()) {
> >>>> return;
> >>>> }
> >>>>
> >>>> synchronized (CubeService.class) {
> >>>> try {
> >>>> cube = getCubeManager().getCube(cubeName);
> >>>> SegmentRange offsets = cube.autoMergeCubeSegments();
> >>>> if (offsets != null) {
> >>>> CubeSegment newSeg = getCubeManager().
> mergeSegments(cube,
> >>> null, offsets, true);
> >>>> logger.debug("Will submit merge job on " + newSeg);
> >>>> DefaultChainedExecutable job =
> >>> EngineFactory.createBatchMergeJob(newSeg, "SYSTEM");
> >>>> getExecutableManager().addJob(job);
> >>>> } else {
> >>>> logger.debug("Not ready for merge on cube " + cubeName);
> >>>> }
> >>>> } catch (IOException e) {
> >>>> logger.error("Failed to auto merge cube " + cubeName, e);
> >>>> }
> >>>> }
> >>>> }
> >>>>
> >>>> ie; getCubeManager().mergeSegments(cube, null, offsets, true); is
> >>> passing the TSRange as ‘null’;
> >>>> to CubeManager:public CubeSegment mergeSegments(CubeInstance cube,
> >>> TSRange tsRange, SegmentRange segRange, boolean force) method;
> >>>> which is defined as:
> >>>> if (cube.getSegments().isEmpty())
> >>>> throw new IllegalArgumentException("Cube " + cube + " has no
> >>> segments");
> >>>>
> >>>> checkInputRanges(tsRange, segRange);
> >>>> checkBuildingSegment(cube);
> >>>> checkCubeIsPartitioned(cube);
> >>>>
> >>>> if (cube.getSegments().getFirstSegment().isOffsetCube()) {
> >>>> // offset cube, merge by date range?
> >>>> if (segRange == null && tsRange != null) {
> >>>> Pair<CubeSegment, CubeSegment> pair =
> >>> cube.getSegments(SegmentStatusEnum.READY)
> >>>> .findMergeOffsetsByDateRange(tsRange, Long.MAX_VALUE);
> >>>> if (pair == null)
> >>>> throw new IllegalArgumentException("Find no segments to
> >>> merge by " + tsRange + " for cube " + cube);
> >>>> segRange = new SegmentRange(pair.getFirst().
> getSegRange().start,
> >>> pair.getSecond().getSegRange().end);
> >>>> }
> >>>> tsRange = null;
> >>>> Preconditions.checkArgument(segRange != null);
> >>>> } else {
> >>>> segRange = null;
> >>>> Preconditions.checkArgument(tsRange != null);
> >>>> }
> >>>>
> >>>> In my case, this is getting invoked,
> >>>> else {
> >>>> segRange = null;
> >>>> Preconditions.checkArgument(tsRange != null);
> >>>> }
> >>>>
> >>>> and as we have passed in tsRange as NULL , so we get this exception:
> >>>> java.lang.IllegalArgumentException
> >>>> at com.google.common.base.Preconditions.checkArgument(Precondit
> >>> ions.java:76)
> >>>> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
> >>> java:544)
> >>>> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
> >>> ubeService.java:601)
> >>>> at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
> >>> Ready(CubeService.java:545)
> >>>> at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
> >>> CGLIB$$17a07c0e.invoke(<generated>)
> >>>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
> >>> xy.java:204)
> >>>> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
> >>> edInterceptor.intercept(CglibAopProxy.java:669)
> >>>> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
> >>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> >>>> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
> >>> ice.java:85)
> >>>>
> >>>> And the auto merge fails.
> >>>>
> >>>> Let me know in case I am missing on something here, or a fix maybe.
> >>>>
> >>>>
> >>>> Thanks,
> >>>> Ketan
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>
> >>
> >> --
> >> Best regards,
> >>
> >> Shaofeng Shi 史少锋
> >>
> >>
> >
> >
> > --
> > Best regards,
> >
> > Shaofeng Shi 史少锋
>
>
Re: Auto merge not working on Kylin 2.2
Posted by 杨浩 <ya...@gmail.com>.
It seems KYLIN-3165 <https://issues.apache.org/jira/browse/KYLIN-3165>. I
think you can merge it to KYLIN-2.2.0 to solve the problem.
2017-12-26 14:23 GMT+08:00 ketan dikshit <kd...@yahoo.com.invalid>:
> Hi ShaoFeng,
> We are using Hive as data source for pulling in fact data for cube
> building,
> Also the commit id as I see is: 0169dc0950fc278239413cfb71313ff9ae8edf7d
>
> Will also investigate myself, and try to resolve the same and share a
> patch.
>
> Thanks,
> Ketan
>
> > On 22-Dec-2017, at 7:41 PM, ShaoFeng Shi <sh...@apache.org> wrote:
> >
> > Hi Ketan,
> >
> > Is your Cube data from Hive or Kafka?
> >
> > The line number seems couldn't match with the Kylin 2.2 source code; Can
> > you double confirm the Kylin version? In Kylin installation folder, there
> > is a commit id sha file, please provide that file content to us so we can
> > exactly match the line numbers. Thanks.
> >
> > 2017-12-22 18:12 GMT+08:00 ShaoFeng Shi <sh...@apache.org>:
> >
> >> It should be a bug; I took a quick look but didn't find the root cause
> >> (very busy in the year-end). Could you please investigate it and then
> >> contribute a patch? Thanks!
> >>
> >> 2017-12-22 16:41 GMT+08:00 ketan dikshit <kd...@yahoo.com.invalid>
> :
> >>
> >>> Hi Guys,
> >>> Any update on this, as I see this is a bug or ?
> >>>
> >>> We are passing in null as TSRange and the check
> >>> Preconditions.checkArgument(tsRange != null); is always failing.
> >>>
> >>> Help would be appreciated.
> >>>
> >>> Thanks,
> >>> Ketan
> >>>
> >>>> On 21-Dec-2017, at 3:06 PM, ketan dikshit
> <kd...@yahoo.com.INVALID>
> >>> wrote:
> >>>>
> >>>> Hi Guys,
> >>>> I am using Kylin 2.2 and getting some issues with Kylin auto merge.
> >>>> The error log in kylin.log is here:
> >>>>
> >>>> 2017-12-21 08:31:18,811 INFO [Thread-50937] service.CubeService:552 :
> >>> checking keepCubeRetention
> >>>> 2017-12-21 08:31:18,811 DEBUG [Thread-50937] model.Segments:201 : Cube
> >>> publishers_v4 has 1 building segments
> >>>> 2017-12-21 08:31:18,811 ERROR [Thread-50937] service.CacheService:87 :
> >>> Error in updateOnNewSegmentReady()
> >>>> java.lang.IllegalArgumentException
> >>>> at com.google.common.base.Preconditions.checkArgument(Precondit
> >>> ions.java:76)
> >>>> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
> >>> java:544)
> >>>> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
> >>> ubeService.java:601)
> >>>> at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
> >>> Ready(CubeService.java:545)
> >>>> at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
> >>> CGLIB$$17a07c0e.invoke(<generated>)
> >>>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
> >>> xy.java:204)
> >>>> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
> >>> edInterceptor.intercept(CglibAopProxy.java:669)
> >>>> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
> >>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> >>>> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
> >>> ice.java:85)
> >>>>
> >>>>
> >>>> Auto Merge Thresholds
> >>>> 8 (Hours)
> >>>> 1 (Days)
> >>>> 7 (Days)
> >>>> 15 (Days)
> >>>>
> >>>>
> >>>> As I see inside the code, I see,
> >>>> private void mergeCubeSegment(String cubeName) {
> >>>> CubeInstance cube = getCubeManager().getCube(cubeName);
> >>>> if (!cube.needAutoMerge()) {
> >>>> return;
> >>>> }
> >>>>
> >>>> synchronized (CubeService.class) {
> >>>> try {
> >>>> cube = getCubeManager().getCube(cubeName);
> >>>> SegmentRange offsets = cube.autoMergeCubeSegments();
> >>>> if (offsets != null) {
> >>>> CubeSegment newSeg = getCubeManager().
> mergeSegments(cube,
> >>> null, offsets, true);
> >>>> logger.debug("Will submit merge job on " + newSeg);
> >>>> DefaultChainedExecutable job =
> >>> EngineFactory.createBatchMergeJob(newSeg, "SYSTEM");
> >>>> getExecutableManager().addJob(job);
> >>>> } else {
> >>>> logger.debug("Not ready for merge on cube " + cubeName);
> >>>> }
> >>>> } catch (IOException e) {
> >>>> logger.error("Failed to auto merge cube " + cubeName, e);
> >>>> }
> >>>> }
> >>>> }
> >>>>
> >>>> ie; getCubeManager().mergeSegments(cube, null, offsets, true); is
> >>> passing the TSRange as ‘null’;
> >>>> to CubeManager:public CubeSegment mergeSegments(CubeInstance cube,
> >>> TSRange tsRange, SegmentRange segRange, boolean force) method;
> >>>> which is defined as:
> >>>> if (cube.getSegments().isEmpty())
> >>>> throw new IllegalArgumentException("Cube " + cube + " has no
> >>> segments");
> >>>>
> >>>> checkInputRanges(tsRange, segRange);
> >>>> checkBuildingSegment(cube);
> >>>> checkCubeIsPartitioned(cube);
> >>>>
> >>>> if (cube.getSegments().getFirstSegment().isOffsetCube()) {
> >>>> // offset cube, merge by date range?
> >>>> if (segRange == null && tsRange != null) {
> >>>> Pair<CubeSegment, CubeSegment> pair =
> >>> cube.getSegments(SegmentStatusEnum.READY)
> >>>> .findMergeOffsetsByDateRange(tsRange, Long.MAX_VALUE);
> >>>> if (pair == null)
> >>>> throw new IllegalArgumentException("Find no segments to
> >>> merge by " + tsRange + " for cube " + cube);
> >>>> segRange = new SegmentRange(pair.getFirst().
> getSegRange().start,
> >>> pair.getSecond().getSegRange().end);
> >>>> }
> >>>> tsRange = null;
> >>>> Preconditions.checkArgument(segRange != null);
> >>>> } else {
> >>>> segRange = null;
> >>>> Preconditions.checkArgument(tsRange != null);
> >>>> }
> >>>>
> >>>> In my case, this is getting invoked,
> >>>> else {
> >>>> segRange = null;
> >>>> Preconditions.checkArgument(tsRange != null);
> >>>> }
> >>>>
> >>>> and as we have passed in tsRange as NULL , so we get this exception:
> >>>> java.lang.IllegalArgumentException
> >>>> at com.google.common.base.Preconditions.checkArgument(Precondit
> >>> ions.java:76)
> >>>> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
> >>> java:544)
> >>>> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
> >>> ubeService.java:601)
> >>>> at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
> >>> Ready(CubeService.java:545)
> >>>> at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
> >>> CGLIB$$17a07c0e.invoke(<generated>)
> >>>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
> >>> xy.java:204)
> >>>> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
> >>> edInterceptor.intercept(CglibAopProxy.java:669)
> >>>> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
> >>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> >>>> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
> >>> ice.java:85)
> >>>>
> >>>> And the auto merge fails.
> >>>>
> >>>> Let me know in case I am missing on something here, or a fix maybe.
> >>>>
> >>>>
> >>>> Thanks,
> >>>> Ketan
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>
> >>
> >> --
> >> Best regards,
> >>
> >> Shaofeng Shi 史少锋
> >>
> >>
> >
> >
> > --
> > Best regards,
> >
> > Shaofeng Shi 史少锋
>
>
Re: Auto merge not working on Kylin 2.2
Posted by ketan dikshit <kd...@yahoo.com.INVALID>.
Hi ShaoFeng,
We are using Hive as data source for pulling in fact data for cube building,
Also the commit id as I see is: 0169dc0950fc278239413cfb71313ff9ae8edf7d
Will also investigate myself, and try to resolve the same and share a patch.
Thanks,
Ketan
> On 22-Dec-2017, at 7:41 PM, ShaoFeng Shi <sh...@apache.org> wrote:
>
> Hi Ketan,
>
> Is your Cube data from Hive or Kafka?
>
> The line number seems couldn't match with the Kylin 2.2 source code; Can
> you double confirm the Kylin version? In Kylin installation folder, there
> is a commit id sha file, please provide that file content to us so we can
> exactly match the line numbers. Thanks.
>
> 2017-12-22 18:12 GMT+08:00 ShaoFeng Shi <sh...@apache.org>:
>
>> It should be a bug; I took a quick look but didn't find the root cause
>> (very busy in the year-end). Could you please investigate it and then
>> contribute a patch? Thanks!
>>
>> 2017-12-22 16:41 GMT+08:00 ketan dikshit <kd...@yahoo.com.invalid>:
>>
>>> Hi Guys,
>>> Any update on this, as I see this is a bug or ?
>>>
>>> We are passing in null as TSRange and the check
>>> Preconditions.checkArgument(tsRange != null); is always failing.
>>>
>>> Help would be appreciated.
>>>
>>> Thanks,
>>> Ketan
>>>
>>>> On 21-Dec-2017, at 3:06 PM, ketan dikshit <kd...@yahoo.com.INVALID>
>>> wrote:
>>>>
>>>> Hi Guys,
>>>> I am using Kylin 2.2 and getting some issues with Kylin auto merge.
>>>> The error log in kylin.log is here:
>>>>
>>>> 2017-12-21 08:31:18,811 INFO [Thread-50937] service.CubeService:552 :
>>> checking keepCubeRetention
>>>> 2017-12-21 08:31:18,811 DEBUG [Thread-50937] model.Segments:201 : Cube
>>> publishers_v4 has 1 building segments
>>>> 2017-12-21 08:31:18,811 ERROR [Thread-50937] service.CacheService:87 :
>>> Error in updateOnNewSegmentReady()
>>>> java.lang.IllegalArgumentException
>>>> at com.google.common.base.Preconditions.checkArgument(Precondit
>>> ions.java:76)
>>>> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
>>> java:544)
>>>> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
>>> ubeService.java:601)
>>>> at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
>>> Ready(CubeService.java:545)
>>>> at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
>>> CGLIB$$17a07c0e.invoke(<generated>)
>>>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
>>> xy.java:204)
>>>> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
>>> edInterceptor.intercept(CglibAopProxy.java:669)
>>>> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
>>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
>>>> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
>>> ice.java:85)
>>>>
>>>>
>>>> Auto Merge Thresholds
>>>> 8 (Hours)
>>>> 1 (Days)
>>>> 7 (Days)
>>>> 15 (Days)
>>>>
>>>>
>>>> As I see inside the code, I see,
>>>> private void mergeCubeSegment(String cubeName) {
>>>> CubeInstance cube = getCubeManager().getCube(cubeName);
>>>> if (!cube.needAutoMerge()) {
>>>> return;
>>>> }
>>>>
>>>> synchronized (CubeService.class) {
>>>> try {
>>>> cube = getCubeManager().getCube(cubeName);
>>>> SegmentRange offsets = cube.autoMergeCubeSegments();
>>>> if (offsets != null) {
>>>> CubeSegment newSeg = getCubeManager().mergeSegments(cube,
>>> null, offsets, true);
>>>> logger.debug("Will submit merge job on " + newSeg);
>>>> DefaultChainedExecutable job =
>>> EngineFactory.createBatchMergeJob(newSeg, "SYSTEM");
>>>> getExecutableManager().addJob(job);
>>>> } else {
>>>> logger.debug("Not ready for merge on cube " + cubeName);
>>>> }
>>>> } catch (IOException e) {
>>>> logger.error("Failed to auto merge cube " + cubeName, e);
>>>> }
>>>> }
>>>> }
>>>>
>>>> ie; getCubeManager().mergeSegments(cube, null, offsets, true); is
>>> passing the TSRange as ‘null’;
>>>> to CubeManager:public CubeSegment mergeSegments(CubeInstance cube,
>>> TSRange tsRange, SegmentRange segRange, boolean force) method;
>>>> which is defined as:
>>>> if (cube.getSegments().isEmpty())
>>>> throw new IllegalArgumentException("Cube " + cube + " has no
>>> segments");
>>>>
>>>> checkInputRanges(tsRange, segRange);
>>>> checkBuildingSegment(cube);
>>>> checkCubeIsPartitioned(cube);
>>>>
>>>> if (cube.getSegments().getFirstSegment().isOffsetCube()) {
>>>> // offset cube, merge by date range?
>>>> if (segRange == null && tsRange != null) {
>>>> Pair<CubeSegment, CubeSegment> pair =
>>> cube.getSegments(SegmentStatusEnum.READY)
>>>> .findMergeOffsetsByDateRange(tsRange, Long.MAX_VALUE);
>>>> if (pair == null)
>>>> throw new IllegalArgumentException("Find no segments to
>>> merge by " + tsRange + " for cube " + cube);
>>>> segRange = new SegmentRange(pair.getFirst().getSegRange().start,
>>> pair.getSecond().getSegRange().end);
>>>> }
>>>> tsRange = null;
>>>> Preconditions.checkArgument(segRange != null);
>>>> } else {
>>>> segRange = null;
>>>> Preconditions.checkArgument(tsRange != null);
>>>> }
>>>>
>>>> In my case, this is getting invoked,
>>>> else {
>>>> segRange = null;
>>>> Preconditions.checkArgument(tsRange != null);
>>>> }
>>>>
>>>> and as we have passed in tsRange as NULL , so we get this exception:
>>>> java.lang.IllegalArgumentException
>>>> at com.google.common.base.Preconditions.checkArgument(Precondit
>>> ions.java:76)
>>>> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
>>> java:544)
>>>> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
>>> ubeService.java:601)
>>>> at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
>>> Ready(CubeService.java:545)
>>>> at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
>>> CGLIB$$17a07c0e.invoke(<generated>)
>>>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
>>> xy.java:204)
>>>> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
>>> edInterceptor.intercept(CglibAopProxy.java:669)
>>>> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
>>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
>>>> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
>>> ice.java:85)
>>>>
>>>> And the auto merge fails.
>>>>
>>>> Let me know in case I am missing on something here, or a fix maybe.
>>>>
>>>>
>>>> Thanks,
>>>> Ketan
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>> --
>> Best regards,
>>
>> Shaofeng Shi 史少锋
>>
>>
>
>
> --
> Best regards,
>
> Shaofeng Shi 史少锋
Re: Auto merge not working on Kylin 2.2
Posted by ShaoFeng Shi <sh...@apache.org>.
Hi Ketan,
Is your Cube data from Hive or Kafka?
The line number seems couldn't match with the Kylin 2.2 source code; Can
you double confirm the Kylin version? In Kylin installation folder, there
is a commit id sha file, please provide that file content to us so we can
exactly match the line numbers. Thanks.
2017-12-22 18:12 GMT+08:00 ShaoFeng Shi <sh...@apache.org>:
> It should be a bug; I took a quick look but didn't find the root cause
> (very busy in the year-end). Could you please investigate it and then
> contribute a patch? Thanks!
>
> 2017-12-22 16:41 GMT+08:00 ketan dikshit <kd...@yahoo.com.invalid>:
>
>> Hi Guys,
>> Any update on this, as I see this is a bug or ?
>>
>> We are passing in null as TSRange and the check
>> Preconditions.checkArgument(tsRange != null); is always failing.
>>
>> Help would be appreciated.
>>
>> Thanks,
>> Ketan
>>
>> > On 21-Dec-2017, at 3:06 PM, ketan dikshit <kd...@yahoo.com.INVALID>
>> wrote:
>> >
>> > Hi Guys,
>> > I am using Kylin 2.2 and getting some issues with Kylin auto merge.
>> > The error log in kylin.log is here:
>> >
>> > 2017-12-21 08:31:18,811 INFO [Thread-50937] service.CubeService:552 :
>> checking keepCubeRetention
>> > 2017-12-21 08:31:18,811 DEBUG [Thread-50937] model.Segments:201 : Cube
>> publishers_v4 has 1 building segments
>> > 2017-12-21 08:31:18,811 ERROR [Thread-50937] service.CacheService:87 :
>> Error in updateOnNewSegmentReady()
>> > java.lang.IllegalArgumentException
>> > at com.google.common.base.Preconditions.checkArgument(Precondit
>> ions.java:76)
>> > at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
>> java:544)
>> > at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
>> ubeService.java:601)
>> > at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
>> Ready(CubeService.java:545)
>> > at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
>> CGLIB$$17a07c0e.invoke(<generated>)
>> > at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
>> xy.java:204)
>> > at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
>> edInterceptor.intercept(CglibAopProxy.java:669)
>> > at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
>> > at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
>> ice.java:85)
>> >
>> >
>> > Auto Merge Thresholds
>> > 8 (Hours)
>> > 1 (Days)
>> > 7 (Days)
>> > 15 (Days)
>> >
>> >
>> > As I see inside the code, I see,
>> > private void mergeCubeSegment(String cubeName) {
>> > CubeInstance cube = getCubeManager().getCube(cubeName);
>> > if (!cube.needAutoMerge()) {
>> > return;
>> > }
>> >
>> > synchronized (CubeService.class) {
>> > try {
>> > cube = getCubeManager().getCube(cubeName);
>> > SegmentRange offsets = cube.autoMergeCubeSegments();
>> > if (offsets != null) {
>> > CubeSegment newSeg = getCubeManager().mergeSegments(cube,
>> null, offsets, true);
>> > logger.debug("Will submit merge job on " + newSeg);
>> > DefaultChainedExecutable job =
>> EngineFactory.createBatchMergeJob(newSeg, "SYSTEM");
>> > getExecutableManager().addJob(job);
>> > } else {
>> > logger.debug("Not ready for merge on cube " + cubeName);
>> > }
>> > } catch (IOException e) {
>> > logger.error("Failed to auto merge cube " + cubeName, e);
>> > }
>> > }
>> > }
>> >
>> > ie; getCubeManager().mergeSegments(cube, null, offsets, true); is
>> passing the TSRange as ‘null’;
>> > to CubeManager:public CubeSegment mergeSegments(CubeInstance cube,
>> TSRange tsRange, SegmentRange segRange, boolean force) method;
>> > which is defined as:
>> > if (cube.getSegments().isEmpty())
>> > throw new IllegalArgumentException("Cube " + cube + " has no
>> segments");
>> >
>> > checkInputRanges(tsRange, segRange);
>> > checkBuildingSegment(cube);
>> > checkCubeIsPartitioned(cube);
>> >
>> > if (cube.getSegments().getFirstSegment().isOffsetCube()) {
>> > // offset cube, merge by date range?
>> > if (segRange == null && tsRange != null) {
>> > Pair<CubeSegment, CubeSegment> pair =
>> cube.getSegments(SegmentStatusEnum.READY)
>> > .findMergeOffsetsByDateRange(tsRange, Long.MAX_VALUE);
>> > if (pair == null)
>> > throw new IllegalArgumentException("Find no segments to
>> merge by " + tsRange + " for cube " + cube);
>> > segRange = new SegmentRange(pair.getFirst().getSegRange().start,
>> pair.getSecond().getSegRange().end);
>> > }
>> > tsRange = null;
>> > Preconditions.checkArgument(segRange != null);
>> > } else {
>> > segRange = null;
>> > Preconditions.checkArgument(tsRange != null);
>> > }
>> >
>> > In my case, this is getting invoked,
>> > else {
>> > segRange = null;
>> > Preconditions.checkArgument(tsRange != null);
>> > }
>> >
>> > and as we have passed in tsRange as NULL , so we get this exception:
>> > java.lang.IllegalArgumentException
>> > at com.google.common.base.Preconditions.checkArgument(Precondit
>> ions.java:76)
>> > at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.
>> java:544)
>> > at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(C
>> ubeService.java:601)
>> > at org.apache.kylin.rest.service.CubeService.updateOnNewSegment
>> Ready(CubeService.java:545)
>> > at org.apache.kylin.rest.service.CubeService$$FastClassBySpring
>> CGLIB$$17a07c0e.invoke(<generated>)
>> > at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro
>> xy.java:204)
>> > at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis
>> edInterceptor.intercept(CglibAopProxy.java:669)
>> > at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC
>> GLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
>> > at org.apache.kylin.rest.service.CacheService$1$1.run(CacheServ
>> ice.java:85)
>> >
>> > And the auto merge fails.
>> >
>> > Let me know in case I am missing on something here, or a fix maybe.
>> >
>> >
>> > Thanks,
>> > Ketan
>> >
>> >
>> >
>> >
>>
>>
>
>
> --
> Best regards,
>
> Shaofeng Shi 史少锋
>
>
--
Best regards,
Shaofeng Shi 史少锋
Re: Auto merge not working on Kylin 2.2
Posted by ShaoFeng Shi <sh...@apache.org>.
It should be a bug; I took a quick look but didn't find the root cause
(very busy in the year-end). Could you please investigate it and then
contribute a patch? Thanks!
2017-12-22 16:41 GMT+08:00 ketan dikshit <kd...@yahoo.com.invalid>:
> Hi Guys,
> Any update on this, as I see this is a bug or ?
>
> We are passing in null as TSRange and the check
> Preconditions.checkArgument(tsRange != null); is always failing.
>
> Help would be appreciated.
>
> Thanks,
> Ketan
>
> > On 21-Dec-2017, at 3:06 PM, ketan dikshit <kd...@yahoo.com.INVALID>
> wrote:
> >
> > Hi Guys,
> > I am using Kylin 2.2 and getting some issues with Kylin auto merge.
> > The error log in kylin.log is here:
> >
> > 2017-12-21 08:31:18,811 INFO [Thread-50937] service.CubeService:552 :
> checking keepCubeRetention
> > 2017-12-21 08:31:18,811 DEBUG [Thread-50937] model.Segments:201 : Cube
> publishers_v4 has 1 building segments
> > 2017-12-21 08:31:18,811 ERROR [Thread-50937] service.CacheService:87 :
> Error in updateOnNewSegmentReady()
> > java.lang.IllegalArgumentException
> > at com.google.common.base.Preconditions.checkArgument(
> Preconditions.java:76)
> > at org.apache.kylin.cube.CubeManager.mergeSegments(
> CubeManager.java:544)
> > at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(
> CubeService.java:601)
> > at org.apache.kylin.rest.service.CubeService.
> updateOnNewSegmentReady(CubeService.java:545)
> > at org.apache.kylin.rest.service.CubeService$$
> FastClassBySpringCGLIB$$17a07c0e.invoke(<generated>)
> > at org.springframework.cglib.proxy.MethodProxy.invoke(
> MethodProxy.java:204)
> > at org.springframework.aop.framework.CglibAopProxy$
> DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
> > at org.apache.kylin.rest.service.CubeService$$
> EnhancerBySpringCGLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> > at org.apache.kylin.rest.service.CacheService$1$1.run(
> CacheService.java:85)
> >
> >
> > Auto Merge Thresholds
> > 8 (Hours)
> > 1 (Days)
> > 7 (Days)
> > 15 (Days)
> >
> >
> > As I see inside the code, I see,
> > private void mergeCubeSegment(String cubeName) {
> > CubeInstance cube = getCubeManager().getCube(cubeName);
> > if (!cube.needAutoMerge()) {
> > return;
> > }
> >
> > synchronized (CubeService.class) {
> > try {
> > cube = getCubeManager().getCube(cubeName);
> > SegmentRange offsets = cube.autoMergeCubeSegments();
> > if (offsets != null) {
> > CubeSegment newSeg = getCubeManager().mergeSegments(cube,
> null, offsets, true);
> > logger.debug("Will submit merge job on " + newSeg);
> > DefaultChainedExecutable job = EngineFactory.createBatchMergeJob(newSeg,
> "SYSTEM");
> > getExecutableManager().addJob(job);
> > } else {
> > logger.debug("Not ready for merge on cube " + cubeName);
> > }
> > } catch (IOException e) {
> > logger.error("Failed to auto merge cube " + cubeName, e);
> > }
> > }
> > }
> >
> > ie; getCubeManager().mergeSegments(cube, null, offsets, true); is
> passing the TSRange as ‘null’;
> > to CubeManager:public CubeSegment mergeSegments(CubeInstance cube,
> TSRange tsRange, SegmentRange segRange, boolean force) method;
> > which is defined as:
> > if (cube.getSegments().isEmpty())
> > throw new IllegalArgumentException("Cube " + cube + " has no
> segments");
> >
> > checkInputRanges(tsRange, segRange);
> > checkBuildingSegment(cube);
> > checkCubeIsPartitioned(cube);
> >
> > if (cube.getSegments().getFirstSegment().isOffsetCube()) {
> > // offset cube, merge by date range?
> > if (segRange == null && tsRange != null) {
> > Pair<CubeSegment, CubeSegment> pair = cube.getSegments(
> SegmentStatusEnum.READY)
> > .findMergeOffsetsByDateRange(tsRange, Long.MAX_VALUE);
> > if (pair == null)
> > throw new IllegalArgumentException("Find no segments to merge
> by " + tsRange + " for cube " + cube);
> > segRange = new SegmentRange(pair.getFirst().getSegRange().start,
> pair.getSecond().getSegRange().end);
> > }
> > tsRange = null;
> > Preconditions.checkArgument(segRange != null);
> > } else {
> > segRange = null;
> > Preconditions.checkArgument(tsRange != null);
> > }
> >
> > In my case, this is getting invoked,
> > else {
> > segRange = null;
> > Preconditions.checkArgument(tsRange != null);
> > }
> >
> > and as we have passed in tsRange as NULL , so we get this exception:
> > java.lang.IllegalArgumentException
> > at com.google.common.base.Preconditions.checkArgument(
> Preconditions.java:76)
> > at org.apache.kylin.cube.CubeManager.mergeSegments(
> CubeManager.java:544)
> > at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(
> CubeService.java:601)
> > at org.apache.kylin.rest.service.CubeService.
> updateOnNewSegmentReady(CubeService.java:545)
> > at org.apache.kylin.rest.service.CubeService$$
> FastClassBySpringCGLIB$$17a07c0e.invoke(<generated>)
> > at org.springframework.cglib.proxy.MethodProxy.invoke(
> MethodProxy.java:204)
> > at org.springframework.aop.framework.CglibAopProxy$
> DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
> > at org.apache.kylin.rest.service.CubeService$$
> EnhancerBySpringCGLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> > at org.apache.kylin.rest.service.CacheService$1$1.run(
> CacheService.java:85)
> >
> > And the auto merge fails.
> >
> > Let me know in case I am missing on something here, or a fix maybe.
> >
> >
> > Thanks,
> > Ketan
> >
> >
> >
> >
>
>
--
Best regards,
Shaofeng Shi 史少锋
Re: Auto merge not working on Kylin 2.2
Posted by ketan dikshit <kd...@yahoo.com.INVALID>.
Hi Guys,
Any update on this, as I see this is a bug or ?
We are passing in null as TSRange and the check Preconditions.checkArgument(tsRange != null); is always failing.
Help would be appreciated.
Thanks,
Ketan
> On 21-Dec-2017, at 3:06 PM, ketan dikshit <kd...@yahoo.com.INVALID> wrote:
>
> Hi Guys,
> I am using Kylin 2.2 and getting some issues with Kylin auto merge.
> The error log in kylin.log is here:
>
> 2017-12-21 08:31:18,811 INFO [Thread-50937] service.CubeService:552 : checking keepCubeRetention
> 2017-12-21 08:31:18,811 DEBUG [Thread-50937] model.Segments:201 : Cube publishers_v4 has 1 building segments
> 2017-12-21 08:31:18,811 ERROR [Thread-50937] service.CacheService:87 : Error in updateOnNewSegmentReady()
> java.lang.IllegalArgumentException
> at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76)
> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.java:544)
> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(CubeService.java:601)
> at org.apache.kylin.rest.service.CubeService.updateOnNewSegmentReady(CubeService.java:545)
> at org.apache.kylin.rest.service.CubeService$$FastClassBySpringCGLIB$$17a07c0e.invoke(<generated>)
> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringCGLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheService.java:85)
>
>
> Auto Merge Thresholds
> 8 (Hours)
> 1 (Days)
> 7 (Days)
> 15 (Days)
>
>
> As I see inside the code, I see,
> private void mergeCubeSegment(String cubeName) {
> CubeInstance cube = getCubeManager().getCube(cubeName);
> if (!cube.needAutoMerge()) {
> return;
> }
>
> synchronized (CubeService.class) {
> try {
> cube = getCubeManager().getCube(cubeName);
> SegmentRange offsets = cube.autoMergeCubeSegments();
> if (offsets != null) {
> CubeSegment newSeg = getCubeManager().mergeSegments(cube, null, offsets, true);
> logger.debug("Will submit merge job on " + newSeg);
> DefaultChainedExecutable job = EngineFactory.createBatchMergeJob(newSeg, "SYSTEM");
> getExecutableManager().addJob(job);
> } else {
> logger.debug("Not ready for merge on cube " + cubeName);
> }
> } catch (IOException e) {
> logger.error("Failed to auto merge cube " + cubeName, e);
> }
> }
> }
>
> ie; getCubeManager().mergeSegments(cube, null, offsets, true); is passing the TSRange as ‘null’;
> to CubeManager:public CubeSegment mergeSegments(CubeInstance cube, TSRange tsRange, SegmentRange segRange, boolean force) method;
> which is defined as:
> if (cube.getSegments().isEmpty())
> throw new IllegalArgumentException("Cube " + cube + " has no segments");
>
> checkInputRanges(tsRange, segRange);
> checkBuildingSegment(cube);
> checkCubeIsPartitioned(cube);
>
> if (cube.getSegments().getFirstSegment().isOffsetCube()) {
> // offset cube, merge by date range?
> if (segRange == null && tsRange != null) {
> Pair<CubeSegment, CubeSegment> pair = cube.getSegments(SegmentStatusEnum.READY)
> .findMergeOffsetsByDateRange(tsRange, Long.MAX_VALUE);
> if (pair == null)
> throw new IllegalArgumentException("Find no segments to merge by " + tsRange + " for cube " + cube);
> segRange = new SegmentRange(pair.getFirst().getSegRange().start, pair.getSecond().getSegRange().end);
> }
> tsRange = null;
> Preconditions.checkArgument(segRange != null);
> } else {
> segRange = null;
> Preconditions.checkArgument(tsRange != null);
> }
>
> In my case, this is getting invoked,
> else {
> segRange = null;
> Preconditions.checkArgument(tsRange != null);
> }
>
> and as we have passed in tsRange as NULL , so we get this exception:
> java.lang.IllegalArgumentException
> at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76)
> at org.apache.kylin.cube.CubeManager.mergeSegments(CubeManager.java:544)
> at org.apache.kylin.rest.service.CubeService.mergeCubeSegment(CubeService.java:601)
> at org.apache.kylin.rest.service.CubeService.updateOnNewSegmentReady(CubeService.java:545)
> at org.apache.kylin.rest.service.CubeService$$FastClassBySpringCGLIB$$17a07c0e.invoke(<generated>)
> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringCGLIB$$e4f6b188.updateOnNewSegmentReady(<generated>)
> at org.apache.kylin.rest.service.CacheService$1$1.run(CacheService.java:85)
>
> And the auto merge fails.
>
> Let me know in case I am missing on something here, or a fix maybe.
>
>
> Thanks,
> Ketan
>
>
>
>