Harsh J created FLUME-1992:
------------------------------

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

Reply via email to