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 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >
