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
[email protected] 

    On Wednesday, January 17, 2018, 4:41:29 PM GMT+5:30, 杨浩 
<[email protected]> 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 <[email protected]>:

> 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 <[email protected]> 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 <[email protected]>:
> >
> >> 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 <[email protected]>
> :
> >>
> >>> 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
> <[email protected]>
> >>> 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 史少锋
>
>  

Reply via email to