Hi Marcelo, Interested to hear the approach to be taken. Shading guava itself seems extreme, but that might make sense.
Gary On Sat, Sep 20, 2014 at 9:38 PM, Marcelo Vanzin <van...@cloudera.com> wrote: > Hmm, looks like the hack to maintain backwards compatibility in the > Java API didn't work that well. I'll take a closer look at this when I > get to work on Monday. > > On Fri, Sep 19, 2014 at 10:30 PM, Cody Koeninger <c...@koeninger.org> > wrote: > > After the recent spark project changes to guava shading, I'm seeing > issues > > with the datastax spark cassandra connector (which depends on guava 15.0) > > and the datastax cql driver (which depends on guava 16.0.1) > > > > Building an assembly for a job (with spark marked as provided) that > > includes either guava 15.0 or 16.0.1, results in errors like the > following: > > > > scala> session.close > > > > scala> s[14/09/20 04:56:35 ERROR Futures$CombinedFuture: input future > > failed. > > java.lang.IllegalAccessError: tried to access class > > org.spark-project.guava.common.base.Absent from class > > com.google.common.base.Optional > > at com.google.common.base.Optional.absent(Optional.java:79) > > at com.google.common.base.Optional.fromNullable(Optional.java:94) > > at > > > com.google.common.util.concurrent.Futures$CombinedFuture.setOneValue(Futures.java:1608) > > at > > > com.google.common.util.concurrent.Futures$CombinedFuture.access$400(Futures.java:1470) > > at > > > com.google.common.util.concurrent.Futures$CombinedFuture$2.run(Futures.java:1548) > > at > > > com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297) > > at > > > com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156) > > at > > > com.google.common.util.concurrent.ExecutionList.add(ExecutionList.java:101) > > at > > > com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:170) > > at > > > com.google.common.util.concurrent.Futures$CombinedFuture.init(Futures.java:1545) > > at > > > com.google.common.util.concurrent.Futures$CombinedFuture.<init>(Futures.java:1491) > > at > > com.google.common.util.concurrent.Futures.listFuture(Futures.java:1640) > > at > > com.google.common.util.concurrent.Futures.allAsList(Futures.java:983) > > at > > > com.datastax.driver.core.CloseFuture$Forwarding.<init>(CloseFuture.java:73) > > at > > > com.datastax.driver.core.HostConnectionPool.closeAsync(HostConnectionPool.java:398) > > at > > > com.datastax.driver.core.SessionManager.closeAsync(SessionManager.java:157) > > at > > com.datastax.driver.core.SessionManager.close(SessionManager.java:172) > > at > > > com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$destroySession(CassandraConnector.scala:180) > > at > > > com.datastax.spark.connector.cql.CassandraConnector$$anonfun$5.apply(CassandraConnector.scala:151) > > at > > > com.datastax.spark.connector.cql.CassandraConnector$$anonfun$5.apply(CassandraConnector.scala:151) > > at com.datastax.spark.connector.cql.RefCountedCache.com > > > $datastax$spark$connector$cql$RefCountedCache$$releaseImmediately(RefCountedCache.scala:86) > > at > > > com.datastax.spark.connector.cql.RefCountedCache$ReleaseTask.run(RefCountedCache.scala:26) > > at > > > com.datastax.spark.connector.cql.RefCountedCache$$anonfun$com$datastax$spark$connector$cql$RefCountedCache$$processPendingReleases$2.apply(RefCountedCache.scala:150) > > at > > > com.datastax.spark.connector.cql.RefCountedCache$$anonfun$com$datastax$spark$connector$cql$RefCountedCache$$processPendingReleases$2.apply(RefCountedCache.scala:147) > > at > > > scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772) > > at scala.collection.Iterator$class.foreach(Iterator.scala:727) > > at > > scala.collection.concurrent.TrieMapIterator.foreach(TrieMap.scala:922) > > at > > scala.collection.IterableLike$class.foreach(IterableLike.scala:72) > > at scala.collection.concurrent.TrieMap.foreach(TrieMap.scala:632) > > at > > > scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771) > > at com.datastax.spark.connector.cql.RefCountedCache.com > > > $datastax$spark$connector$cql$RefCountedCache$$processPendingReleases(RefCountedCache.scala:147) > > at > > > com.datastax.spark.connector.cql.RefCountedCache$$anon$1.run(RefCountedCache.scala:157) > > 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$301(ScheduledThreadPoolExecutor.java:178) > > at > > > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) > > at > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > > at > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > > at java.lang.Thread.run(Thread.java:722) > > > > -- > Marcelo > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@spark.apache.org > For additional commands, e-mail: dev-h...@spark.apache.org > >