I believe, that a clean and maintainable solution would be if the engine/framework itself could be separated from everything else, the dependency directions would be fixed, plugins would depend only on api-s and after that, any source/sink/etc implementation would come as an individual module/plugin and would be loaded with an isolated classloader.
This way anyone could implement anything with any version. It would be possible to use a different version of ES at the same time if you need it. On Mon, Jan 29, 2018 at 10:48 AM, Wahrmann, Helmut <helmut.wahrm...@rsa.com> wrote: > I think it is not a problem to distribute the modules together if we have > maintainers for them. > It doesn't make sense to release Flume 1.9 in 2018 with support for module > versions which were current in 2013. > > Best way would be to identify people willing to upgrade the modules to > their latest version. > If we can't find someone, we should distribute it separately. > > best regards, > > Helmut > > > -----Original Message----- > From: Mike Percy [mailto:mpe...@apache.org] > Sent: Montag, 29. Jänner 2018 09:12 > To: dev@flume.apache.org > Subject: Re: Merging to trunk? > > Interesting proposal Yonghao. > > I think it's worth pointing out that today, a Flume build will work "out > of the box" with any combination of supported plugins since they are all > already in the Flume classpath. The downside of that, of course, is that > the dependency hell makes it very hard to upgrade modules. The benefit is > that it's nice from a usability perspective. > > However, if we are willing to drop this "out of the box" usage feature, > then we could allow for separate modules to have conflicting dependencies > (i.e. Solr and ElasticSearch) as long as they are not loaded in the same > Flume agent. > > What do you folks think about removing the Solr Sink and the ElasticSearch > Sink from the default distribution and instead distribute them as separate > (fat) jars? If we do it for those two then it might also make sense to do > it for other modules as well. > > I am not sure this is very user friendly in the common case where people > just want to use the HDFS and HBase sink out of the box. So maybe we leave > those as part of the "default" module setup? > > Obviously, changing how modules get included into the classpath would be a > breaking change. I think a change that drastic would call for a Flume 2.0.0 > release in order to indicate that it's not backwards compatible. > > Thoughts? > > Mike > > On Sat, Jan 27, 2018 at 10:50 PM, Yonghao Zou <yonghaoz1...@gmail.com> > wrote: > > > Maybe the Maven shade plugin can solve this, we can package each > > module to a fat jar and they will not depend on other modules. > > > > 2018-01-27 6:14 GMT+08:00 Wahrmann, Helmut <helmut.wahrm...@rsa.com>: > > > > > fully agreed. > > > But we shouldn't do that do support a 4 years old component. > > > The goal should be to support the latest releases. > > > It is ridiculous to release flume 1.9 with elasticsearch 0.90.1 > > > support, when 6.x is the current version. > > > > > > > > > > > > Best regards, > > > > > > Helmut Wahrmann > > > > > > > > > -------- Ursprüngliche Nachricht -------- > > > Von: Ralph Goers <ralph.go...@dslextreme.com> > > > Datum: 26.01.18 22:12 (GMT+01:00) > > > An: dev@flume.apache.org > > > Betreff: Re: Merging to trunk? > > > > > > The “right” way to deal with this from a Maven perspective is to > > > declare the version you want in the dependencyManagement section of > > > the parent > > pom > > > and to not specify any versions in child poms. Then use the Maven > > enforcer > > > plugin to make sure everything required has a declaration in the > > > dependencyManagement section. > > > > > > Ralph > > > > > > > On Jan 26, 2018, at 8:28 AM, Wahrmann, Helmut > > > > <helmut.wahrm...@rsa.com > > > > > > wrote: > > > > > > > > Hi Mike, > > > > > > > > This only shows that some other component needs to be updated as > well. > > > > Which software relies on Lucene 4.3.0, which was released in 2013? > > > > It is most probably not used by anyone else anymore. > > > > > > > > This needs to be solved. It makes no sense to release Flume 1.9 > > > > with > > > support for ElasticSearch 0.90.1. > > > > And it doesn't make sense either to release Flume 1.9 with support > > > > for > > a > > > component that relies on Lucene 4.3.0. > > > > > > > > We will always have dependency problems, if one component is > > > > updated to > > > a newer version and others not. > > > > > > > > To get rid of the conflict is probably to set "optional" to true > > > > in the > > > pom.xml. > > > > Then we don't distribute those Jars in the flume lib and the users > > > > need > > > to set their class path to point e.g. to Elasticsearch and then the > > correct > > > libs will be used. > > > > I doubt that a Elasticsearch user will also use some other > > > > component > > > with e.g. this outdated Lucene. > > > > > > > > best regards, > > > > > > > > Helmut > > > > > > > > > > > > -----Original Message----- > > > > From: Mike Percy [mailto:mpe...@apache.org] > > > > Sent: Donnerstag, 25. Jänner 2018 23:01 > > > > To: dev@flume.apache.org > > > > Subject: Re: Merging to trunk? > > > > > > > > Hi Helmut, > > > > I wrote a small Perl script to identify dependency conflicts based > > > > on > > > output from mvn dependency:tree and posted it here: > > > https://gist.github.com/ > > > > mpercy/39614d770864bdd0c386befd5e8a1840 > > > > > > > > I ran that on the current trunk and it actually found some errors > > > > which > > > should be fixed: > > > > > > > > Version conflict: package com.google.guava:guava:jar needed in 2 > > > different > > > > versions: (11.0.2, 18.0) > > > > Version conflict: package > > > > commons-httpclient:commons-httpclient:jar > > > needed in 2 different versions: (3.0.1, 3.1) Version conflict: > > > package commons-logging:commons-logging:jar needed in 2 different > versions: > > > (1.1.3, 1.2) Version conflict: package commons-pool:commons-pool:jar > > needed > > > in 2 different versions: (1.5.4, 1.6) Version conflict: package > > > net.sf.jopt-simple:jopt-simple:jar needed in 2 different versions: > > > (3.2, > > > 4.7) Version conflict: package > > > org.codehaus.jackson:jackson-jaxrs:jar > > > needed in > > > > 2 different versions: (1.8.3, 1.8.8) > > > > ERROR: 6 package version conflicts identified > > > > > > > > However, after applying your patch on top of trunk and running it > > again, > > > it identified new conflicts: > > > > > > > > Version conflict: package com.google.guava:guava:jar needed in 2 > > > different > > > > versions: (11.0.2, 18.0) > > > > Version conflict: package > > > > commons-httpclient:commons-httpclient:jar > > > needed in 2 different versions: (3.0.1, 3.1) Version conflict: > > > package commons-logging:commons-logging:jar needed in 2 different > versions: > > > (1.1.3, 1.2) Version conflict: package commons-pool:commons-pool:jar > > needed > > > in 2 different versions: (1.5.4, 1.6) Version conflict: package > > > net.sf.jopt-simple:jopt-simple:jar needed in 3 different versions: > > > (3.2, 4.7, 5.0.2) Version conflict: package > > > org.apache.lucene:lucene- analyzers-common:jar > > > > needed in 2 different versions: (4.3.0, 7.1.0) Version conflict: > > package > > > org.apache.lucene:lucene-core:jar needed in 2 different versions: > > (4.3.0, > > > 7.1.0) Version conflict: package > > > org.apache.lucene:lucene-grouping:jar > > > needed in 2 different versions: (4.3.0, 7.1.0) Version conflict: > > > package org.apache.lucene:lucene-highlighter:jar needed in 2 > different versions: > > > (4.3.0, 7.1.0) Version conflict: package org.apache.lucene:lucene- > > memory:jar > > > needed in 2 different versions: (4.3.0, 7.1.0) Version conflict: > > > package org.apache.lucene:lucene-misc:jar needed in 2 different > versions: > > (4.3.0, > > > 7.1.0) Version conflict: package > > > org.apache.lucene:lucene-queries:jar > > > needed in 2 different versions: (4.3.0, 7.1.0) Version conflict: > > > package org.apache.lucene:lucene-queryparser:jar needed in 2 > different versions: > > > (4.3.0, 7.1.0) Version conflict: package org.apache.lucene:lucene- > > spatial:jar > > > needed in 2 different versions: (4.3.0, 7.1.0) Version conflict: > > > package org.apache.lucene:lucene-suggest:jar needed in 2 different > versions: > > > (4.3.0, 7.1.0) Version conflict: package > > > org.codehaus.jackson:jackson- > > jaxrs:jar > > > needed in > > > > 2 different versions: (1.8.3, 1.8.8) Version conflict: package > > > > org.yaml:snakeyaml:jar needed in 2 different > > > > versions: (1.10, 1.17) > > > > ERROR: 17 package version conflicts identified > > > > > > > > So while it appears Guava is no longer a concern, there are other > > > conflicting dependencies involved in the conflict here. > > > > > > > > I'm interested to hear your thoughts on this. > > > > > > > > Regards, > > > > Mike > > > > > > > > On Wed, Jan 24, 2018 at 7:57 AM, Wahrmann, Helmut < > > > helmut.wahrm...@rsa.com> > > > > wrote: > > > > > > > >> Hi Mike, > > > >> > > > >> Thanks for the quick response. > > > >> > > > >> I fully agree that we need to take care about interop between the > > > >> different components and dependencies. > > > >> But if you look at the patch in FLUME-3021, it only puts in > > > >> Elasticsearch dependencies. > > > >> > > > >> The issue with Guava, which you saw in FLUME-2921 is no longer > > > >> there, because since mid-2016 a lot has changed in the Flume > > > >> trunk and all those dependencies are fixed. > > > >> It won't even be possible gto apply this patch anymore. > > > >> > > > >> The patch in FLUME-3021 works with the latest Elasticsearch > > > >> versions, without introducing additional dependencies, which > > > >> might cause problems to other projects. > > > >> So I think it can be safely merged into trunk. > > > >> > > > >> best regards, > > > >> > > > >> Helmut > > > >> > > > >> > > > >> -----Original Message----- > > > >> From: Mike Percy [mailto:mpe...@apache.org] > > > >> Sent: Dienstag, 23. Jänner 2018 20:39 > > > >> To: dev@flume.apache.org > > > >> Subject: Re: Merging to trunk? > > > >> > > > >> Hi Helmut, > > > >> Thank you for bringing this up on dev@ and thank you for the > > > >> patch. I see there are other people people interested in this > > > >> component upgrade > > > as well. > > > >> > > > >> As you are probably aware, a Flume committer will need to approve > > > >> the change before I gets merged to trunk. > > > >> > > > >> My primary concern w/ merging this would be compatibility of the > > > >> dependencies. Flume suffers from a kind of a "dependency hell" > > > >> because of a lack of classloading support (either via OSGI or Java > modules). > > > >> See > > > >> https://issues.apache.org/jira/browse/FLUME-2293 for a tracking > > ticket > > > >> about that issue. What that means is that all of the components > > > >> that Flume ships must have compatible dependencies with each > > > >> other which makes changes like this more complex. Therefore I > > > >> would like someone to verify that mvn dependency:tree does not > > > >> show conflicts when run from the top level with the new patches. > > > >> If memory serves, I believe Google Guava is likely to conflict. > > > >> > > > >> Also, I think that > > > >> https://issues.apache.org/jira/browse/FLUME-3021 > > is > > > >> a duplicate of https://issues.apache.org/jira/browse/FLUME-2921 > > > >> which has additional information about the various issues that we > > > >> need to solve to do this upgrade. > > > >> > > > >> I'd be happy to discuss this issue some more on this thread. > > > >> > > > >> Mike > > > >> > > > >> > > > >> On Tue, Jan 23, 2018 at 12:57 AM, Wahrmann, Helmut < > > > >> helmut.wahrm...@rsa.com> > > > >> wrote: > > > >> > > > >>> Hi, > > > >>> > > > >>> Who decides if/when a patch or pull request gets merged to trunk? > > > >>> Reason I am asking is for the Elasticsearch support. The current > > > >>> code in trunk does not work with ES > 2.x. > > > >>> Currently Elasticsearch is at 6.1. > > > >>> > > > >>> In FLUME-3021 we have several patches since March last year. > > > >>> I have a patched Flume running at a customer since April last > > > >>> year without any problems. > > > >>> > > > >>> So why not merging those changes into the trunk? > > > >>> As I stated in my comment in FLUME-3021, it will not cause any > > > >>> problems, cause the current trunk won't work with newer ES > > > >>> versions > > > >> anyhow. > > > >>> I doubt that someone is out there still running ES 0.95. > > > >>> > > > >>> best regards, > > > >>> > > > >>> Helmut > > > >>> > > > >> > > > > > > > > > > > > > > > -- > > *Yonghao Zou* > > *Shanghai China* > > > > *China Merchants Bank* > > > > *EN_BLOG <http://blog.haozi1994.com/>* > > *CH_BLOG* <http://www.fxiaoqing.com/> > > >