HI,

I have logged the issue with JIRA. ID is CALCITE-1994.

Best,
Kunwar Singh

On Fri, Sep 29, 2017 at 12:19 PM, Kunwar Deep Singh Toor <
[email protected]> wrote:

> 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.Model
>>>>>>>>>>> Handler.visit(ModelHandler.
>>>>>>>>>>> java:269)
>>>>>>>>>>>      at org.apache.calcite.model.JsonC
>>>>>>>>>>> ustomSchema.accept(JsonCustomS
>>>>>>>>>>> chema.java:45)
>>>>>>>>>>>      at org.apache.calcite.model.Model
>>>>>>>>>>> Handler.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