[
https://issues.apache.org/jira/browse/FLUME-2944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15368835#comment-15368835
]
Mike Percy commented on FLUME-2944:
-----------------------------------
> Therefore, we should omit guava as a dependency and delegate these problems
> to our users.
I disagree with this statement. It is part of our job to make sure that
everything we ship works "out of the box".
That said, you are right that if users add custom sources / sinks to the
classpath then they will have to deal with this themselves.
Removing Guava as a Flume dependency might help a little bit but it doesn't
solve the whole problem, since we need to normalize the Guava version across
all of the components that we ship.
> Remove guava as dependency
> --------------------------
>
> Key: FLUME-2944
> URL: https://issues.apache.org/jira/browse/FLUME-2944
> Project: Flume
> Issue Type: Improvement
> Affects Versions: v1.8.0
> Reporter: Lior Zeno
> Fix For: v1.8.0
>
>
> Guava is a very popular dependency, which often causes version collisions.
> Especially, due to lack of backwards compatibility.
> Adding new dependencies that rely on guava requires us to shade these
> dependencies. This is hard to maintain and bloats our distribution.
> Therefore, we should omit guava as a dependency and delegate these problems
> to our users.
> If a user would like to use X-Source with Y-Sink, where X and Y rely on
> colliding versions of guava, the user will have to shade one of them.
> This task should be easier, now that we have moved to Java 1.7. If we move to
> 1.8 in this release, then most of it becomes virtually trivial.
> Flume relies on the following guava imports:
> * com.google.common.base.Preconditions
> * com.google.common.collect.ArrayListMultimap
> * com.google.common.collect.ListMultimap
> * com.google.common.collect.Lists
> * com.google.common.collect.Maps
> * com.google.common.annotations.VisibleForTesting
> * com.google.common.util.concurrent.ThreadFactoryBuilder
> * com.google.common.base.Charsets
> * com.google.common.base.Strings
> * com.google.common.base.Throwables
> * com.google.common.eventbus.EventBus
> * com.google.common.eventbus.Subscribe
> * com.google.common.primitives.UnsignedBytes
> * com.google.common.cache.CacheBuilder
> * com.google.common.cache.CacheLoader
> * com.google.common.cache.LoadingCache
> * com.google.common.util.concurrent.UncheckedExecutionException
> * com.google.common.collect.HashMultimap
> * com.google.common.collect.SetMultimap
> * com.google.common.collect.ImmutableMap
> * com.google.common.base.Joiner
> * com.google.common.io.Files
> * com.google.common.io.Resources
> * com.google.common.collect.ImmutableSortedSet
> * com.google.common.base.Splitter
> * com.google.common.collect.Iterables
> * com.google.common.base.Optional
> * com.google.common.io.ByteStreams
> * com.google.common.collect.HashBasedTable
> * com.google.common.primitives.Longs
> * com.google.common.collect.Sets
> * com.google.common.collect.ImmutableListMultimap
> * com.google.common.collect.ListMultimap
> * import com.google.common.collect.Table
> * com.google.common.base.Function
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)