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)