Hello,

Sorry for the late reply. I have been on travel for the past 2 days.

I have never really used JIRA but I will try my best to report the issue
there.

In the meantime can you tell me the exact way to solve this problem. I am
new to calcite and I have been trying to figure out the classpath.txt in
the ElasticSearch5 module.

Thanks,
Kunwar Singh

On Thu, Sep 28, 2017 at 1:28 PM, Christian Beikov <
[email protected]> wrote:

> Maybe I am wrong, but I was assuming the command "mvn
> dependency:build-classpath" will include the dependencies of all modules
> regardless of whether we include the elasticsearch2 target/classes or not.
>
>
>
> Mit freundlichen Grüßen,
> ------------------------------------------------------------------------
> *Christian Beikov*
> Am 28.09.2017 um 19:16 schrieb Julian Hyde:
>
>> I understand that. But if we remove calcite-elasticsearch2 from sqlline’s
>> classpath, sqlline will still get calcite-elasticsearch5 and the elastic
>> search 5.x client driver libraries that it depends upon.
>>
>> And the elastic search 2.x client driver libraries will not be on
>> sqlline's class path, because calcite-elasticsearch2 is the only module
>> that depends on them. So there will be no clash.
>>
>> Julian
>>
>>
>> On Sep 28, 2017, at 9:53 AM, Christian Beikov <[email protected]>
>>> wrote:
>>>
>>> The elasticsearch2 module depens on the elasticsearch client driver
>>> libraries with version 2.x and the elasticsearch5 module depends on the
>>> elasticsearch client driver libraries with version 5.x. That's the version
>>> conflict Kunwar was running into.
>>>
>>>
>>> Mit freundlichen Grüßen,
>>> ------------------------------------------------------------------------
>>> *Christian Beikov*
>>> Am 28.09.2017 um 18:35 schrieb Julian Hyde:
>>>
>>>> Christian,
>>>>
>>>> I don’t understand. The elasticsearch5 module does not depend on the
>>>> elasticsearch2 module, only on core and linq4j. Therefore if it (and its
>>>> dependencies) are added to sqlline’s class path, it should have everything
>>>> it needs. What am I missing?
>>>>
>>>> Julian
>>>>
>>>>
>>>> On Sep 27, 2017, at 11:02 PM, Christian Beikov <
>>>>> [email protected]> wrote:
>>>>>
>>>>> Well it's not so simple I suppose. You also need to exclude the
>>>>> elasticsearch2 maven module from the pom.xml since that one is actually
>>>>> contributing the elasticsearch client to the classpath. For the sake of
>>>>> simplicity, we could introduce profiles that only have a specific ES
>>>>> version, but that doesn't scale obviously regarding possible other version
>>>>> combinations.
>>>>>
>>>>> I can introduce a profile if you want, but a real fix as I said needs
>>>>> classloader magic like what e.g. JBoss Modules does.
>>>>>
>>>>>
>>>>> Mit freundlichen Grüßen,
>>>>> ------------------------------------------------------------
>>>>> ------------
>>>>> *Christian Beikov*
>>>>> Am 27.09.2017 um 20:28 schrieb Julian Hyde:
>>>>>
>>>>>> I agree with Christian that it’s just a problem with sqlline’s class
>>>>>> path. The simplest solution is to remove elasticsearch2 from the line 
>>>>>> that
>>>>>> builds the class path:
>>>>>>
>>>>>> for module in core cassandra druid elasticsearch2 elasticsearch5 file
>>>>>> mongodb spark splunk example/csv example/function; do
>>>>>>    CP=${CP}${module}/target/classes:
>>>>>>    CP=${CP}${module}/target/test-classes:
>>>>>> done
>>>>>>
>>>>>> Then sqlline will work out of the box for ES5. People who want to run
>>>>>> ES2 will have to edit the script.
>>>>>>
>>>>>> Kunwar, Can you please log a JIRA case?
>>>>>>
>>>>>> Christian, Can you you fix it?
>>>>>>
>>>>>> It’s conceivable that someone would want to combine data from an ES2
>>>>>> and ES5 instance, but we don’t have an answer for them, whether they 
>>>>>> invoke
>>>>>> Calcite via sqlline or any other way. The incompatible libraries will
>>>>>> clash, unless there is some class-loader magic keeping them in different
>>>>>> namespaces. The right answer is probably something like Jboss modules, 
>>>>>> but
>>>>>> it’s low priority.
>>>>>>
>>>>>> Julian
>>>>>>
>>>>>>
>>>>>> On Sep 27, 2017, at 9:29 AM, Christian Beikov <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>> Depends if you want to be able to connect to an ES2 and ES5 server
>>>>>>> at the
>>>>>>> same time through sqlline.
>>>>>>>
>>>>>>> Am 27.09.2017 17:53 schrieb "Josh Elser" <[email protected]>:
>>>>>>>
>>>>>>> A quick solution is to add some documentation around how to give a
>>>>>>>> specific version of ElasticSearch at build-time. This would help
>>>>>>>> folks
>>>>>>>> build Calcite with the exact version that they want (assuming that
>>>>>>>> the API
>>>>>>>> hasn't changed and the adapter actually works with that version of
>>>>>>>> ES)
>>>>>>>>
>>>>>>>> We don't need to have multiple versions of ElasticSearch on the
>>>>>>>> classpath
>>>>>>>> at once, right?
>>>>>>>>
>>>>>>>> On 9/27/17 2:13 AM, Christian Beikov wrote:
>>>>>>>>
>>>>>>>> Sqlline is problematic as it will have both elastic search versions
>>>>>>>>> on
>>>>>>>>> the classpath. I haven't thought about that before. In the
>>>>>>>>> meantime you
>>>>>>>>> could remove old versions of libraries from the
>>>>>>>>> "target/fullclasspath.txt"
>>>>>>>>> file to workaround the classpath problem.
>>>>>>>>>
>>>>>>>>> @Julian Hyde: How should we deal with something like this? We'd
>>>>>>>>> need
>>>>>>>>> isolated "modules" instead of a flat class path for sqlline. Maybe
>>>>>>>>> we could
>>>>>>>>> build sqlline on JBoss Modules(https://github.com/jbo
>>>>>>>>> ss-modules/jboss-modules) to achieve that?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Mit freundlichen Grüßen,
>>>>>>>>> ------------------------------------------------------------
>>>>>>>>> ------------
>>>>>>>>> *Christian Beikov*
>>>>>>>>> Am 27.09.2017 um 01:30 schrieb Kunwar Deep Singh Toor:
>>>>>>>>>
>>>>>>>>> ---------- Forwarded message ----------
>>>>>>>>>> From: Kunwar Deep Singh Toor <[email protected]>
>>>>>>>>>> Date: Mon, Sep 25, 2017 at 8:16 PM
>>>>>>>>>> Subject: ElasticSearch5 not working
>>>>>>>>>> To: [email protected]
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>>   I have been trying to connect to the ElasticSearch  suing ES
>>>>>>>>>> adapter
>>>>>>>>>> through sqlline. I was able to connect to ES 2.1.4 using the ES2
>>>>>>>>>> adapter
>>>>>>>>>> but when I try connecting to ES 5.1.1 using the ES5 adapter the
>>>>>>>>>> following
>>>>>>>>>> error pops up, I checked the logs for ElasticSearch and it does
>>>>>>>>>> not
>>>>>>>>>> show  a
>>>>>>>>>> connection attempt being made.
>>>>>>>>>>
>>>>>>>>>> The following is the error:
>>>>>>>>>> java.lang.NoSuchMethodError: org.elasticsearch.transport.cl
>>>>>>>>>> ient.PreBuiltTransportClient.addPlugins(Ljava/util/Collectio
>>>>>>>>>> n;Ljava/util/Collection;)Ljava/util/Collection;
>>>>>>>>>>      at org.elasticsearch.transport.cl
>>>>>>>>>> ient.PreBuiltTransportClient.<
>>>>>>>>>> init>(PreBuiltTransportClient.java:130)
>>>>>>>>>>      at org.elasticsearch.transport.cl
>>>>>>>>>> ient.PreBuiltTransportClient.<
>>>>>>>>>> init>(PreBuiltTransportClient.java:116)
>>>>>>>>>>      at org.elasticsearch.transport.cl
>>>>>>>>>> ient.PreBuiltTransportClient.<
>>>>>>>>>> init>(PreBuiltTransportClient.java:106)
>>>>>>>>>>      at org.apache.calcite.adapter.ela
>>>>>>>>>> sticsearch5.Elasticsearch5Sche
>>>>>>>>>> ma.open(Elasticsearch5Schema.java:119)
>>>>>>>>>>      at org.apache.calcite.adapter.ela
>>>>>>>>>> sticsearch5.Elasticsearch5Sche
>>>>>>>>>> ma.<init>(Elasticsearch5Schema.java:74)
>>>>>>>>>>      at org.apache.calcite.adapter.ela
>>>>>>>>>> sticsearch5.Elasticsearch5Sche
>>>>>>>>>> maFactory.create(Elasticsearch5SchemaFactory.java:56)
>>>>>>>>>>      at org.apache.calcite.model.ModelHandler.visit(ModelHandler.
>>>>>>>>>> java:269)
>>>>>>>>>>      at org.apache.calcite.model.JsonC
>>>>>>>>>> ustomSchema.accept(JsonCustomS
>>>>>>>>>> chema.java:45)
>>>>>>>>>>      at org.apache.calcite.model.ModelHandler.visit(ModelHandler.
>>>>>>>>>> java:195)
>>>>>>>>>>      at org.apache.calcite.model.Model
>>>>>>>>>> Handler.<init>(ModelHandler.
>>>>>>>>>> java:87)
>>>>>>>>>>      at org.apache.calcite.jdbc.Driver$1.onConnectionInit(Driver.
>>>>>>>>>> java:104)
>>>>>>>>>>      at org.apache.calcite.avatica.Unr
>>>>>>>>>> egisteredDriver.connect(Unregi
>>>>>>>>>> steredDriver.java:139)
>>>>>>>>>>      at sqlline.DatabaseConnection.con
>>>>>>>>>> nect(DatabaseConnection.java:156)
>>>>>>>>>>      at sqlline.DatabaseConnection.get
>>>>>>>>>> Connection(DatabaseConnection.
>>>>>>>>>> java:204)
>>>>>>>>>>      at sqlline.Commands.connect(Commands.java:1095)
>>>>>>>>>>      at sqlline.Commands.connect(Commands.java:1001)
>>>>>>>>>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>>>>>>>> Method)
>>>>>>>>>>      at sun.reflect.NativeMethodAccess
>>>>>>>>>> orImpl.invoke(NativeMethodAcce
>>>>>>>>>> ssorImpl.java:62)
>>>>>>>>>>      at sun.reflect.DelegatingMethodAc
>>>>>>>>>> cessorImpl.invoke(DelegatingMe
>>>>>>>>>> thodAccessorImpl.java:43)
>>>>>>>>>>      at java.lang.reflect.Method.invoke(Method.java:498)
>>>>>>>>>>      at sqlline.ReflectiveCommandHandl
>>>>>>>>>> er.execute(ReflectiveCommandHa
>>>>>>>>>> ndler.java:38)
>>>>>>>>>>      at sqlline.SqlLine.dispatch(SqlLine.java:791)
>>>>>>>>>>      at sqlline.SqlLine.begin(SqlLine.java:668)
>>>>>>>>>>      at sqlline.SqlLine.start(SqlLine.java:373)
>>>>>>>>>>      at sqlline.SqlLine.main(SqlLine.java:265)
>>>>>>>>>>
>>>>>>>>>> I have recently started working on calcite and any help would be
>>>>>>>>>> much
>>>>>>>>>> appreciated.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> Kunwar Singh
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>

Reply via email to