[ 
https://issues.apache.org/jira/browse/KYLIN-1985?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

zhengdong updated KYLIN-1985:
-----------------------------
    Description: 
we suffered from a strange problem that we got a  
java.lang.ArrayIndexOutOfBoundsException when build of refresh a cube, 
exception stack like this :

  java.lang.IllegalStateException: Failed to load lookup table DIM_TABLE_NAME 
from snapshot 
/table_snapshot/dim_table_name/5a78a522-6f85-4650-b47d-6a5f5806b7f7.snapshot
        at 
org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:621)
        at 
org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:61)
        at 
org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:42)
        at 
org.apache.kylin.engine.mr.steps.CreateDictionaryJob.run(CreateDictionaryJob.java:56)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
        at 
org.apache.kylin.engine.mr.common.HadoopShellExecutable.doWork(HadoopShellExecutable.java:63)
        at 
org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:112)
        at 
org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:57)
        at 
org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:112)
        at 
org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:127)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 19
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:85)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:34)
        at org.apache.kylin.dict.lookup.LookupTable.initRow(LookupTable.java:76)
        at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.java:67)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.init(LookupStringTable.java:79)
        at org.apache.kylin.dict.lookup.LookupTable.<init>(LookupTable.java:55)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.<init>(LookupStringTable.java:65)
        at 
org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:619)
        ... 13 more

and a simple exception when queried by a lookup table dimension
  
ERROR [http-bio-7070-exec-7] controller.QueryController:209 : Exception when 
execute sql
        at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
        at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
        at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:143)
        at 
org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:186)
        at 
org.apache.kylin.rest.service.QueryService.execute(QueryService.java:366)
        at 
org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryService.java:278)
        at 
org.apache.kylin.rest.service.QueryService.query(QueryService.java:121)
        at 
org.apache.kylin.rest.service.QueryService$$FastClassByCGLIB$$4957273f.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:618)
        at 
org.apache.kylin.rest.service.QueryService$$EnhancerByCGLIB$$315e2079.query(<generated>)
        at 
org.apache.kylin.rest.controller.QueryController.doQueryWithCache(QueryController.java:192)
        at 
org.apache.kylin.rest.controller.QueryController.query(QueryController.java:94)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 19
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:85)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:34)
        at org.apache.kylin.dict.lookup.LookupTable.initRow(LookupTable.java:76)
        at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.java:67)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.init(LookupStringTable.java:79)
        at org.apache.kylin.dict.lookup.LookupTable.<init>(LookupTable.java:55)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.<init>(LookupStringTable.java:65)
        at 
org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:619)

    Though the exception message, we found that one lookup table had been 
changed in hive (add colunms) and not been synchronized with kylin. However, 
the cause of this problem is too subtle and not easily found.
    As for the implementation of SnapshotTable, only the colunms 

  was:
we suffered from a strange problem that we got a  
java.lang.ArrayIndexOutOfBoundsException when build of refresh a cube, 
exception stack like this :

  java.lang.IllegalStateException: Failed to load lookup table DIM_TABLE_NAME 
from snapshot 
/table_snapshot/dim_table_name/5a78a522-6f85-4650-b47d-6a5f5806b7f7.snapshot
        at 
org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:621)
        at 
org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:61)
        at 
org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:42)
        at 
org.apache.kylin.engine.mr.steps.CreateDictionaryJob.run(CreateDictionaryJob.java:56)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
        at 
org.apache.kylin.engine.mr.common.HadoopShellExecutable.doWork(HadoopShellExecutable.java:63)
        at 
org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:112)
        at 
org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:57)
        at 
org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:112)
        at 
org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:127)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 19
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:85)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:34)
        at org.apache.kylin.dict.lookup.LookupTable.initRow(LookupTable.java:76)
        at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.java:67)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.init(LookupStringTable.java:79)
        at org.apache.kylin.dict.lookup.LookupTable.<init>(LookupTable.java:55)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.<init>(LookupStringTable.java:65)
        at 
org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:619)
        ... 13 more

and a simple exception when queried by a lookup table dimension
  
ERROR [http-bio-7070-exec-7] controller.QueryController:209 : Exception when 
execute sql
        at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
        at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
        at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:143)
        at 
org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:186)
        at 
org.apache.kylin.rest.service.QueryService.execute(QueryService.java:366)
        at 
org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryService.java:278)
        at 
org.apache.kylin.rest.service.QueryService.query(QueryService.java:121)
        at 
org.apache.kylin.rest.service.QueryService$$FastClassByCGLIB$$4957273f.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:618)
        at 
org.apache.kylin.rest.service.QueryService$$EnhancerByCGLIB$$315e2079.query(<generated>)
        at 
org.apache.kylin.rest.controller.QueryController.doQueryWithCache(QueryController.java:192)
        at 
org.apache.kylin.rest.controller.QueryController.query(QueryController.java:94)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 19
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:85)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:34)
        at org.apache.kylin.dict.lookup.LookupTable.initRow(LookupTable.java:76)
        at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.java:67)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.init(LookupStringTable.java:79)
        at org.apache.kylin.dict.lookup.LookupTable.<init>(LookupTable.java:55)
        at 
org.apache.kylin.dict.lookup.LookupStringTable.<init>(LookupStringTable.java:65)
        at 
org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:619)

Though the exception message, we found that one lookup table had been changed 
in hive (add colunms) and not been synchronized with kylin. However, the cause 
of this problem is too subtle and not easily found. As for the implementation 
of 


> SnapshotTable should only keep the colunms described in tableDesc
> -----------------------------------------------------------------
>
>                 Key: KYLIN-1985
>                 URL: https://issues.apache.org/jira/browse/KYLIN-1985
>             Project: Kylin
>          Issue Type: Bug
>    Affects Versions: v1.5.3
>            Reporter: zhengdong
>
> we suffered from a strange problem that we got a  
> java.lang.ArrayIndexOutOfBoundsException when build of refresh a cube, 
> exception stack like this :
>   java.lang.IllegalStateException: Failed to load lookup table DIM_TABLE_NAME 
> from snapshot 
> /table_snapshot/dim_table_name/5a78a522-6f85-4650-b47d-6a5f5806b7f7.snapshot
>       at 
> org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:621)
>       at 
> org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:61)
>       at 
> org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:42)
>       at 
> org.apache.kylin.engine.mr.steps.CreateDictionaryJob.run(CreateDictionaryJob.java:56)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
>       at 
> org.apache.kylin.engine.mr.common.HadoopShellExecutable.doWork(HadoopShellExecutable.java:63)
>       at 
> org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:112)
>       at 
> org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:57)
>       at 
> org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:112)
>       at 
> org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:127)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 19
>       at 
> org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:85)
>       at 
> org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:34)
>       at org.apache.kylin.dict.lookup.LookupTable.initRow(LookupTable.java:76)
>       at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.java:67)
>       at 
> org.apache.kylin.dict.lookup.LookupStringTable.init(LookupStringTable.java:79)
>       at org.apache.kylin.dict.lookup.LookupTable.<init>(LookupTable.java:55)
>       at 
> org.apache.kylin.dict.lookup.LookupStringTable.<init>(LookupStringTable.java:65)
>       at 
> org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:619)
>       ... 13 more
> and a simple exception when queried by a lookup table dimension
>   
> ERROR [http-bio-7070-exec-7] controller.QueryController:209 : Exception when 
> execute sql
>         at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
>         at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
>         at 
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:143)
>         at 
> org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:186)
>         at 
> org.apache.kylin.rest.service.QueryService.execute(QueryService.java:366)
>         at 
> org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryService.java:278)
>         at 
> org.apache.kylin.rest.service.QueryService.query(QueryService.java:121)
>         at 
> org.apache.kylin.rest.service.QueryService$$FastClassByCGLIB$$4957273f.invoke(<generated>)
>         at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
>         at 
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:618)
>         at 
> org.apache.kylin.rest.service.QueryService$$EnhancerByCGLIB$$315e2079.query(<generated>)
>         at 
> org.apache.kylin.rest.controller.QueryController.doQueryWithCache(QueryController.java:192)
>         at 
> org.apache.kylin.rest.controller.QueryController.query(QueryController.java:94)
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 19
>         at 
> org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:85)
>         at 
> org.apache.kylin.dict.lookup.LookupStringTable.convertRow(LookupStringTable.java:34)
>         at 
> org.apache.kylin.dict.lookup.LookupTable.initRow(LookupTable.java:76)
>         at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.java:67)
>         at 
> org.apache.kylin.dict.lookup.LookupStringTable.init(LookupStringTable.java:79)
>         at 
> org.apache.kylin.dict.lookup.LookupTable.<init>(LookupTable.java:55)
>         at 
> org.apache.kylin.dict.lookup.LookupStringTable.<init>(LookupStringTable.java:65)
>         at 
> org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:619)
>     Though the exception message, we found that one lookup table had been 
> changed in hive (add colunms) and not been synchronized with kylin. However, 
> the cause of this problem is too subtle and not easily found.
>     As for the implementation of SnapshotTable, only the colunms 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to