Liu Shaohui created KYLIN-4005:
----------------------------------

             Summary: Saving Cube of a aggregation Groups(40 Dimensions, Max 
Dimension Combination:5) may cause kylin server OOM
                 Key: KYLIN-4005
                 URL: https://issues.apache.org/jira/browse/KYLIN-4005
             Project: Kylin
          Issue Type: Bug
          Components: REST Service
    Affects Versions: v2.5.2
            Reporter: Liu Shaohui
             Fix For: Future


A user try to save a cube with a aggregation Groups(40 Dimensions, Max 
Dimension Combination:5) caused the kylin server OOM. The reason is that the 
DefaultCuboidScheduler will cost a lot memory when calculating all cube ids. 
The stack is following
{code}
http-bio-7070-exec-35
  at java.lang.OutOfMemoryError.<init>()V (OutOfMemoryError.java:48)
  at java.util.HashMap.resize()[Ljava/util/HashMap$Node; (HashMap.java:704)
  at 
java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;
 (HashMap.java:663)
  at 
java.util.HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 
(HashMap.java:612)
  at java.util.HashSet.add(Ljava/lang/Object;)Z (HashSet.java:220)
  at java.util.AbstractCollection.addAll(Ljava/util/Collection;)Z 
(AbstractCollection.java:344)
  at 
org.apache.kylin.cube.cuboid.DefaultCuboidScheduler.getOnTreeParentsByLayer(Ljava/util/Collection;)Ljava/util/Set;
 (DefaultCuboidScheduler.java:240)
  at 
org.apache.kylin.cube.cuboid.DefaultCuboidScheduler.buildTreeBottomUp()Lorg/apache/kylin/common/util/Pair;
 (DefaultCuboidScheduler.java:183)
  at 
org.apache.kylin.cube.cuboid.DefaultCuboidScheduler.<init>(Lorg/apache/kylin/cube/model/CubeDesc;)V
 (DefaultCuboidScheduler.java:58)
  at 
sun.reflect.GeneratedConstructorAccessor140.newInstance([Ljava/lang/Object;)Ljava/lang/Object;
 (Unknown Source)
  at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance([Ljava/lang/Object;)Ljava/lang/Object;
 (DelegatingConstructorAccessorImpl.java:45)
  at 
java.lang.reflect.Constructor.newInstance([Ljava/lang/Object;)Ljava/lang/Object;
 (Constructor.java:423)
  at 
org.apache.kylin.cube.cuboid.CuboidScheduler.getInstance(Lorg/apache/kylin/cube/model/CubeDesc;)Lorg/apache/kylin/cube/cuboid/CuboidScheduler;
 (CuboidScheduler.java:41)
  at 
org.apache.kylin.cube.model.CubeDesc.getInitialCuboidScheduler()Lorg/apache/kylin/cube/cuboid/CuboidScheduler;
 (CubeDesc.java:750)
  at 
org.apache.kylin.cube.cuboid.CuboidCLI.simulateCuboidGeneration(Lorg/apache/kylin/cube/model/CubeDesc;Z)I
 (CuboidCLI.java:47)
  at 
org.apache.kylin.rest.service.CubeService.updateCubeAndDesc(Lorg/apache/kylin/cube/CubeInstance;Lorg/apache/kylin/cube/model/CubeDesc;Ljava/lang/String;Z)Lorg/apache/kylin/cube/model/CubeDesc;
 (CubeService.java:287)
  at 
org.apache.kylin.rest.service.CubeService$$FastClassBySpringCGLIB$$17a07c0e.invoke(ILjava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
 (Unknown Source)
  at 
org.springframework.cglib.proxy.MethodProxy.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
 (MethodProxy.java:204)
  at 
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
 (CglibAopProxy.java:669)
  at 
org.apache.kylin.rest.service.CubeService$$EnhancerBySpringCGLIB$$34de75c4.updateCubeAndDesc(Lorg/apache/kylin/cube/CubeInstance;Lorg/apache/kylin/cube/model/CubeDesc;Ljava/lang/String;Z)Lorg/apache/kylin/cube/model/CubeDesc;
 (Unknown Source)
  at 
org.apache.kylin.rest.controller.CubeController.updateCubeDesc(Lorg/apache/kylin/rest/request/CubeRequest;)Lorg/apache/kylin/rest/request/CubeReq
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to