You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "Edward Sargisson (JIRA)" <ji...@apache.org> on 2013/04/20 01:03:16 UTC

[jira] [Commented] (FLUME-1992) ElasticSearch dependency is marked optional

    [ https://issues.apache.org/jira/browse/FLUME-1992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13636990#comment-13636990 ] 

Edward Sargisson commented on FLUME-1992:
-----------------------------------------

As indicated in the description, when elasticsearch makes a major release it ends to break compatibility with previously installed clusters.

I know that 0.19 and 0.20 could not talk together. I have just tested having a 0.90RC2 client in the elasticsearchsink talking to a 0.20 cluster and it fails too.

Thus I think that users should choose which elasticsearch jar they want to use and place it in the lib directory. Therefore option 2 above should be taken and the documentation updated.
                
> ElasticSearch dependency is marked optional
> -------------------------------------------
>
>                 Key: FLUME-1992
>                 URL: https://issues.apache.org/jira/browse/FLUME-1992
>             Project: Flume
>          Issue Type: Improvement
>          Components: Sinks+Sources
>    Affects Versions: v1.4.0
>            Reporter: Harsh J
>            Priority: Minor
>
> FLUME-1371 added an ElasticSearch module but the dependency added in it for org.elasticsearch classes is marked {{<optional>true</optional>}}.
> This means it doesn't get generated into the builds Flume would ship and the user guide will not work unless a user manually places their version of ElasticSearch jars on the classpath. They will get the error:
> {code}
> java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/TransportAddress
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:188)
>         at org.apache.flume.sink.DefaultSinkFactory.getClass(DefaultSinkFactory.java:67)
>         at org.apache.flume.sink.DefaultSinkFactory.create(DefaultSinkFactory.java:41)
>         at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:415)
>         at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:103)
>         at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:140)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>         at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
>         at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
>         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
>         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:679)
> Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.transport.TransportAddress
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>         ... 15 more
> {code}
> Two ways to address this; either we:
> # Mark dependency as non-optional, supply a bundled elasticsearch jar (version decision could be a problem I imagine, if their releases break compatibility often)
> # Update the user guide to instruct the user to place the jar onto flume's classpath in proper manner, before following the remaining of the guide.
> Problem of the ClassNotFound originally reported by user j0sh_X over FreeNode IRC.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira