Please slim down the shaded guava jar

52 views
Skip to first unread message

adrian...@gmail.com

unread,
Oct 21, 2020, 2:06:21 AM10/21/20
to DataStax Java Driver for Apache Cassandra User Mailing List
Can this java-driver-shaded-guava be slimmed down please?

$ du -k ~/.m2/repository/com/datastax/oss/java-driver-shaded-guava/25.1-jre-graal-sub-1/java-driver-shaded-guava-25.1-jre-graal-sub-1.jar
2800

By the look of this, this is not choosing classes as it would be hard to reach almost 2.8M unless you use everything. Probably there's a way to slim this.

This adds a large percentage of Zipkin's image size. Ironically after a lot of effort to move to the Netty driver, compatible with our Netty, due to this we are actually net larger than before, even removing everything except the core driver jar.

fingers crossed,
-Adrian

Marco Scoppetta

unread,
Oct 21, 2020, 2:12:35 AM10/21/20
to DataStax Java Driver for Apache Cassandra User Mailing List, adrian...@gmail.com

adrian...@gmail.com

unread,
Oct 21, 2020, 2:20:03 AM10/21/20
to DataStax Java Driver for Apache Cassandra User Mailing List

I can see it could be tricky because there's dual packaging, also some optional features even in OSS such as the graph libraries. Still it could be possible to depend on something less than the entire guava api, especially as you are controlling the packaging of it now.

For example, a slimmer "shaded guava" dep that only "oss core" uses (ex not the optional apis, just the core part of the core jar). then a larger shaded guava that depends on that one and adds the rest of the stuff.

$ cd ~/oss/java-driver/core/src/main/java/com/datastax/oss
$ ag guava|sed -n '/import/s/.* //gp'|sort |uniq
com.datastax.oss.driver.shaded.guava.common.annotations.VisibleForTesting;
com.datastax.oss.driver.shaded.guava.common.base.Charsets;
com.datastax.oss.driver.shaded.guava.common.base.Joiner;
com.datastax.oss.driver.shaded.guava.common.base.MoreObjects;
com.datastax.oss.driver.shaded.guava.common.base.Objects;
com.datastax.oss.driver.shaded.guava.common.base.Preconditions;
com.datastax.oss.driver.shaded.guava.common.base.Strings;
com.datastax.oss.driver.shaded.guava.common.base.Throwables;
com.datastax.oss.driver.shaded.guava.common.base.Ticker;
com.datastax.oss.driver.shaded.guava.common.cache.Cache;
com.datastax.oss.driver.shaded.guava.common.cache.CacheBuilder;
com.datastax.oss.driver.shaded.guava.common.cache.CacheLoader;
com.datastax.oss.driver.shaded.guava.common.cache.LoadingCache;
com.datastax.oss.driver.shaded.guava.common.cache.RemovalListener;
com.datastax.oss.driver.shaded.guava.common.cache.RemovalNotification;
com.datastax.oss.driver.shaded.guava.common.collect.AbstractIterator;
com.datastax.oss.driver.shaded.guava.common.collect.BiMap;
com.datastax.oss.driver.shaded.guava.common.collect.HashBiMap;
com.datastax.oss.driver.shaded.guava.common.collect.HashMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.ImmutableList;
com.datastax.oss.driver.shaded.guava.common.collect.ImmutableListMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.ImmutableMap;
com.datastax.oss.driver.shaded.guava.common.collect.ImmutableMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.ImmutableSet;
com.datastax.oss.driver.shaded.guava.common.collect.ImmutableSetMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.ImmutableSortedSet;
com.datastax.oss.driver.shaded.guava.common.collect.Iterables;
com.datastax.oss.driver.shaded.guava.common.collect.Iterators;
com.datastax.oss.driver.shaded.guava.common.collect.LinkedHashMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.LinkedListMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.ListMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.Lists;
com.datastax.oss.driver.shaded.guava.common.collect.MapMaker;
com.datastax.oss.driver.shaded.guava.common.collect.Maps;
com.datastax.oss.driver.shaded.guava.common.collect.Multimap;
com.datastax.oss.driver.shaded.guava.common.collect.MultimapBuilder;
com.datastax.oss.driver.shaded.guava.common.collect.Multimaps;
com.datastax.oss.driver.shaded.guava.common.collect.SetMultimap;
com.datastax.oss.driver.shaded.guava.common.collect.Sets;
com.datastax.oss.driver.shaded.guava.common.graph.Graphs;
com.datastax.oss.driver.shaded.guava.common.graph.MutableValueGraph;
com.datastax.oss.driver.shaded.guava.common.graph.ValueGraphBuilder;
com.datastax.oss.driver.shaded.guava.common.io.ByteArrayDataOutput;
com.datastax.oss.driver.shaded.guava.common.io.ByteStreams;
com.datastax.oss.driver.shaded.guava.common.net.HostAndPort;
com.datastax.oss.driver.shaded.guava.common.primitives.Ints;
com.datastax.oss.driver.shaded.guava.common.primitives.Longs;
com.datastax.oss.driver.shaded.guava.common.primitives.Primitives;
com.datastax.oss.driver.shaded.guava.common.primitives.UnsignedBytes;
com.datastax.oss.driver.shaded.guava.common.reflect.TypeParameter;
com.datastax.oss.driver.shaded.guava.common.reflect.TypeResolver;
com.datastax.oss.driver.shaded.guava.common.reflect.TypeToken;
com.datastax.oss.driver.shaded.guava.common.util.concurrent.ExecutionError;
com.datastax.oss.driver.shaded.guava.common.util.concurrent.ThreadFactoryBuilder;
com.datastax.oss.driver.shaded.guava.common.util.concurrent.UncheckedExecutionException;
Reply all
Reply to author
Forward
0 new messages