Exception for org.apache.calcite.config.CalciteConnectionProperty

396 views
Skip to first unread message

Mario Fortier

unread,
Dec 28, 2016, 1:27:57 PM12/28/16
to Druid User
Trying to test built-in SQL.

I build the package from latest in GIT, but broker gets an exception when "druid.sql.enable=true". Broker works fine when "druid.sql.enable=false".

One server setup, using mostly quickstart-conf (see below for some changes).

Some configuration missing in my setup? help appreciated.

===

Changes in _common/common.runtime.properties:
druid.extensions.loadList=["druid-histogram", "druid-datasketches", "druid-kafka-indexing-service"]
druid.extensions.directory=/home/ec2-user/smq/druid/extensions
druid.extensions.hadoopDependenciesDir=/home/ec2-user/smq/druid/hadoop-dependencies
druid.storage.storageDirectory=/home/ec2-user/smq/var/druid/segments
druid.indexer.logs.directory=/home/ec2-user/smq/var/druid/indexing-logs

Changes in broker/runtime.properties:
druid.sql.enable=true
druid.sql.server.enableAvatica=true

===

2016-12-28T06:33:18,324 INFO [main] io.druid.guice.JsonConfigurator - Loaded class[class io.druid.sql.calcite.planner.PlannerConfig] from props[druid.sql.planner.] as [PlannerConfig{metadataRefreshPeriod=PT1M, maxSemiJoinRowsInMemory=100000, maxTopNLimit=100000, selectThreshold=1000, useApproximateCountDistinct=true, useApproximateTopN=true,useFallback=false}]
2016-12-28T06:33:18,659 INFO [main] io.druid.guice.JsonConfigurator - Loaded class[class io.druid.sql.avatica.ServerConfig] from props[druid.sql.server.] as [io.druid.sql.avatica.ServerConfig@1f5ce838]
2016-12-28T06:33:18,661 ERROR [main] io.druid.cli.CliBroker - Error when starting up.  Failing.
com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) Error in custom provider, java.lang.AbstractMethodError: org.apache.calcite.config.CalciteConnectionProperty.valueClass()Ljava/lang/Class;
  at io.druid.sql.guice.SqlModule.createCalciteConnection(SqlModule.java:76) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> io.druid.sql.guice.SqlModule)
  while locating org.apache.calcite.jdbc.CalciteConnection
    for the 1st parameter of io.druid.sql.avatica.DruidAvaticaHandler.<init>(DruidAvaticaHandler.java:53)
  while locating io.druid.sql.avatica.DruidAvaticaHandler
  while locating org.eclipse.jetty.server.Handler annotated with @com.google.inject.multibindings.Element(setName=,uniqueId=90, type=MULTIBINDER, keyType=)
  at io.druid.server.initialization.jetty.JettyBindings.addHandler(JettyBindings.java:56) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> io.druid.sql.guice.SqlModule -> com.google.inject.multibindings.Multibinder$RealMultibinder)
  while locating java.util.Set<org.eclipse.jetty.server.Handler>
    for the 1st parameter of io.druid.cli.QueryJettyServerInitializer.<init>(QueryJettyServerInitializer.java:46)
  while locating io.druid.cli.QueryJettyServerInitializer
  at io.druid.cli.CliBroker$1.configure(CliBroker.java:103) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> io.druid.cli.CliBroker$1)
  while locating io.druid.server.initialization.jetty.JettyServerInitializer
  at io.druid.server.initialization.jetty.JettyServerModule.getServer(JettyServerModule.java:136) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> io.druid.server.initialization.jetty.JettyServerModule)
  at io.druid.server.initialization.jetty.JettyServerModule.getServer(JettyServerModule.java:136) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> io.druid.server.initialization.jetty.JettyServerModule)
  while locating org.eclipse.jetty.server.Server
1 error
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1028) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1050) ~[guice-4.1.0.jar:?]
        at io.druid.guice.LifecycleModule$2.start(LifecycleModule.java:154) ~[druid-api-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at io.druid.cli.GuiceRunnable.initLifecycle(GuiceRunnable.java:102) [druid-services-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at io.druid.cli.ServerRunnable.run(ServerRunnable.java:41) [druid-services-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at io.druid.cli.Main.main(Main.java:108) [druid-services-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
Caused by: java.lang.AbstractMethodError: org.apache.calcite.config.CalciteConnectionProperty.valueClass()Ljava/lang/Class;
        at org.apache.calcite.avatica.ConnectionConfigImpl$PropEnv.getEnum(ConnectionConfigImpl.java:228) ~[avatica-core-1.9.0.jar:1.9.0]
        at org.apache.calcite.avatica.ConnectionConfigImpl$PropEnv.getEnum(ConnectionConfigImpl.java:219) ~[avatica-core-1.9.0.jar:1.9.0]
        at org.apache.calcite.config.CalciteConnectionConfigImpl.lex(CalciteConnectionConfigImpl.java:99) ~[calcite-core-1.10.0.jar:1.10.0]
        at org.apache.calcite.config.CalciteConnectionConfigImpl.caseSensitive(CalciteConnectionConfigImpl.java:119) ~[calcite-core-1.10.0.jar:1.10.0]
        at org.apache.calcite.jdbc.CalciteConnectionImpl.<init>(CalciteConnectionImpl.java:129) ~[calcite-core-1.10.0.jar:1.10.0]
        at org.apache.calcite.jdbc.CalciteJdbc41Factory$CalciteJdbc41Connection.<init>(CalciteJdbc41Factory.java:114) ~[calcite-core-1.10.0.jar:1.10.0]
        at org.apache.calcite.jdbc.CalciteJdbc41Factory.newConnection(CalciteJdbc41Factory.java:59) ~[calcite-core-1.10.0.jar:1.10.0]
        at org.apache.calcite.jdbc.CalciteJdbc41Factory.newConnection(CalciteJdbc41Factory.java:44) ~[calcite-core-1.10.0.jar:1.10.0]
        at org.apache.calcite.jdbc.CalciteFactory.newConnection(CalciteFactory.java:53) ~[calcite-core-1.10.0.jar:1.10.0]
        at io.druid.sql.calcite.planner.Calcites.jdbc(Calcites.java:78) ~[druid-sql-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at io.druid.sql.guice.SqlModule.createCalciteConnection(SqlModule.java:77) ~[druid-sql-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at io.druid.sql.guice.SqlModule$$FastClassByGuice$$c28eea15.invoke(<generated>) ~[druid-sql-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1019) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015) ~[guice-4.1.0.jar:?]
        at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:375) ~[guice-multibindings-4.1.0.jar:?]
        at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:258) ~[guice-multibindings-4.1.0.jar:?]
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1019) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1054) ~[guice-4.1.0.jar:?]
        at io.druid.server.initialization.jetty.JettyServerModule.initializeServer(JettyServerModule.java:192) ~[druid-server-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at io.druid.server.initialization.jetty.JettyServerModule.getServer(JettyServerModule.java:137) ~[druid-server-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at io.druid.server.initialization.jetty.JettyServerModule$$FastClassByGuice$$9a8e0366.invoke(<generated>) ~[druid-server-0.9.3-SNAPSHOT.jar:0.9.3-SNAPSHOT]
        at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1019) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085) ~[guice-4.1.0.jar:?]
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015) ~[guice-4.1.0.jar:?]
        ... 5 more


Mario Fortier

unread,
Dec 30, 2016, 11:38:44 AM12/30/16
to Druid User
I have verified that the same exception is happening with an unmodified package (except for appending "druid.sql.enable=true" in broker runtime.properties).

Build done using latest master branch and I do "mvn clean package" to produce the package.

Host is an EC2 running Amazon Linux AMI

========

[...]$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /usr/share/apache-maven
Java version: 1.7.0_121, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.121.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.30-32.54.amzn1.x86_64", arch: "amd64", family: "unix"

[...]$ java -version
java version "1.7.0_121"
OpenJDK Runtime Environment (amzn-2.6.8.1.69.amzn1-x86_64 u121-b00)
OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode)

 

Gian Merlino

unread,
Jan 3, 2017, 2:06:09 PM1/3/17
to druid...@googlegroups.com
Hey Mario,

I think this problem is caused by having multiple versions of avatica on the classpath. This patch should fix it: https://github.com/druid-io/druid/pull/3813

Gian

--
You received this message because you are subscribed to the Google Groups "Druid User" group.
To unsubscribe from this group and stop receiving emails from it, send an email to druid-user+unsubscribe@googlegroups.com.
To post to this group, send email to druid...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/druid-user/cef9e076-f021-4a37-b6cf-e5275521f9be%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Mario Fortier

unread,
Jan 4, 2017, 9:42:30 AM1/4/17
to Druid User
This patch fix the problem.

I am able to do SQL queries now.

Thanks Gian for both the feature and support.
Reply all
Reply to author
Forward
0 new messages