[
https://issues.apache.org/jira/browse/KYLIN-3773?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16743897#comment-16743897
]
youcheng.zhang commented on KYLIN-3773:
---------------------------------------
[~hstefani] thanks for create the ticket.
I reproduced the bug in my test environment. I tried turn on
'-verbose:class' when starting kylin, and found that the first time class
'org.apache.kylin.common.KylinConfig' is loaded from
\{KYLIN_HOME}/tomcat/webapps/kylin/WEB-INF/lib/kylin-core-common-2.6.0.jar, and
the second time kylin want to load the class from
\{KYLIN_HOME}/lib/kylin-coprocessor-2.6.0.jar and finally throw the
java.lang.LinkageError.
So this is a problem of conflict of jars. Maybe we should define different
classloaders to seperate the jars to avoid this problem?
> Using Mysql instead of Hive as Data Source fails with LinkageError
> ------------------------------------------------------------------
>
> Key: KYLIN-3773
> URL: https://issues.apache.org/jira/browse/KYLIN-3773
> Project: Kylin
> Issue Type: Bug
> Components: RDBMS Source
> Affects Versions: v2.6.0
> Reporter: Hubert STEFANI
> Priority: Critical
>
> we are currently trying to test the KYLIN-3552 feature to rely directly on
> Mysql for data source instead of Hive.
>
> (we tried as much as possible to add correct info in kylin.properties, add
> mysql jdbc drivers, create mysql.xml in ./conf/datasources ... as mentioned
> in [https://github.com/apache/kylin/pull/327/files] )
>
>
>
> the error we entountered is ( excerpt from kylin.log ) :
>
>
> 2019-01-14 09:48:16,223 WARN [http-bio-7070-exec-2] extensible.JdbcSource:50
> : DataSource cannot be connected. This may not be required in a MapReduce job.
> java.lang.LinkageError: loader constraint violation: loader (instance of
> sun/misc/Launcher$AppClassLoader) previously initiated loading for a
> different type with name "org/apache/kylin/common/KylinConfig"
> at java.lang.ClassLoader.defineClass1(Native Method)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
> at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
> at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
> at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> at
> org.apache.kylin.sdk.datasource.framework.SourceConnectorFactory.getJdbcConnector(SourceConnectorFactory.java:27)
> with further trace :
> 2019-01-14 09:48:16,229 ERROR [http-bio-7070-exec-2]
> controller.TableController:197 :
> java.lang.NullPointerException
> at
> org.apache.kylin.source.jdbc.extensible.JdbcExplorer.listDatabases(JdbcExplorer.java:58)
> at
> org.apache.kylin.rest.service.TableService.getSourceDbNames(TableService.java:280)
> at
> org.apache.kylin.rest.controller.TableController.showHiveDatabases(TableController.java:195)
>
>
> the properties we use in kylin.properties are :
>
> # NOVAGEN -- CUSTOM CONFIGURATION FOR MYSQL AS SOURCE
> kylin.source.jdbc.connection-url=jdbc:mysql://ip-172-31-36-94.eu-west-1.compute.internal:3306/decat
> kylin.source.jdbc.driver=com.mysql.jdbc.Driver
> kylin.source.jdbc.dialect=mysql
> kylin.source.jdbc.user=root
> kylin.source.jdbc.pass=
> kylin.query.pushdown.runner-class-name=org.apache.kylin.query.pushdown.PushdownRunnerSDKImpl
> kylin.source.default=16
> kylin.source.jdbc.sqoop-home=/usr/bin
> kylin.source.jdbc.adaptor=org.apache.kylin.sdk.datasource.adaptor.MysqlAdaptor
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)