In our use case, the Java class which opens calcite connection is contained in
a external Java jar file, which is loaded dynamicly through classloaders other
than the default systemloader like this:
try {
ClassLoader loader = URLClassLoader.newInstance(
new URL[] { new URL("jar:file:" + path + "!/") },
getClass().getClassLoader());
Class<?> clazz = Class.forName(classPath, true, loader);
we mention this because the error message shows a classloader parameter.
------------------ Original ------------------
From: "xiaobo ";<[email protected]>;
Send time: Saturday, Feb 12, 2022 11:56 AM
To: "dev"<[email protected]>;
Subject: Re: calcite multi-threading problem
And if we remove calcite from our project, janino is not in "resolved
depencies" library list of pom.xml,
So we think it not the janino conflic problem.
------------------ Original ------------------
From: "xiaobo ";<[email protected]>;
Send time: Saturday, Feb 12, 2022 9:49 AM
To: "dev"<[email protected]>;
Subject: Re: calcite multi-threading problem
can you share the solution for the problem, we are using the following
libraries, and it seems janino 3.1.6 is only dependent by calcite-core.
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>9</java.version>
<maven.compiler.source>9</maven.compiler.source>
<maven.compiler.target>9</maven.compiler.target>
<log4j2.version>2.17.1</log4j2.version>
<drools.version>7.64.0.Final</drools.version>
</properties>
<groupId>org.apache.calcite</groupId>
<artifactId>calcite-core</artifactId>
<version>1.29.0</version>
</dependency>
<dependency>
<groupId>org.apache.calcite.avatica</groupId>
<artifactId>avatica-core</artifactId>
<version>1.20.0</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>${drools.version}</version>
</dependency>
------------------ Original ------------------
From: "xiong duan";<[email protected]>;
Send time: Saturday, Feb 12, 2022 8:43 AM
To: "dev"<[email protected]>;
Subject: Re: calcite multi-threading problem
Yes, It is a dependency issue. I have met the same problem. +1 for Dmitry.
Dmitry Sysolyatin <[email protected]> 于2022年2月11日周五 21:18写道:
> Actually, I had the same problem with spark. Spark 3.2.1 uses the old
> version of janino, calcite 1.29 uses the new version of janino and they are
> not compatible.
> If I downgrade janino version to version which spark uses I got an error
> not method found exception
> If I upgrade the janino version to the version which calcite uses I get the
> same error but with another method.
>
> As a result, I built a separate calcite jar package where I shaded janino
> dependency
>
>
>
> On Fri, Feb 11, 2022 at 2:39 PM stanilovsky evgeny <
> [email protected]> wrote:
>
> > for example on a current calcite branch:
> > grep janino gradle.properties
> > janino.version=3.1.6
> >
> >
> > > yes, we use drools in the same project, and drools uses janino
> > > too, is there a version list of janino which calcite supports?
> > >
> > >
> > >
> > >
> > > ---Original---
> > > From: "Dmitry Sysolyatin"<[email protected]>
> > > Date: Fri, Feb 11, 2022 18:30 PM
> > > To: "dev"<[email protected]>;
> > > Subject: Re: calcite multi-threading problem
> > >
> > >
> > > Hi!
> > >
> >
> It looks like a dependency issue, not like a multi-threading issue. Most
> > >
> >
> likely you have some dependency that use another version of janino but
> > > calcite requires another one
> > >
> > >
> >
> On Fri, Feb 11, 2022 at 12:18 PM xiaobo <[email protected]
> > > wrote:
> > >
> > > > Hi,
> > > >
> > > >
> > >
> >
> > we open a calcite connection with ReflectiveSchema in one thread, and
> > >
> >
> > execute sqls in other threads against the connection, but failed with
> > > > this error
> > > >
> > > >
> > > >
> > > >
> > > > com.google.common.util.concurrent.ExecutionError:
> > > > java.lang.NoSuchMethodError:
> > > >
> > >
> >
> > org.codehaus.commons.compiler.CompilerFactoryFactory.getDefaultCompilerFactory(Ljava/lang/ClassLoader;)
> > > >
> > > > Lorg/codehaus/commons/compiler/ICompilerFactory;
> > > >
> > > >
> > >
> >
> > do we miss anything regarding to multi-threading with calcite?
> >
>