Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-7358

Conflict between guava from Cassandra and CQL Driver

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Normal
    • Resolution: Won't Fix
    • None
    • None
    • None

    Description

      The problem is that Cassandra still depends on guava 15 while CQL Driver depends on guava 16. Attempts to run both in the same process (that is typical for embedding cassandra e.g. for unit tests) causes incompatibility problems:

      java.lang.NoSuchMethodError: com.google.common.util.concurrent.RateLimiter.acquire(I)V
      	at org.apache.cassandra.io.compress.CompressedThrottledReader.reBuffer(CompressedThrottledReader.java:40)
      	at org.apache.cassandra.io.util.RandomAccessReader.seek(RandomAccessReader.java:280)
      	at org.apache.cassandra.io.sstable.SSTableScanner$KeyScanningIterator.computeNext(SSTableScanner.java:262)
      	at org.apache.cassandra.io.sstable.SSTableScanner$KeyScanningIterator.computeNext(SSTableScanner.java:203)
      	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
      	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
      	at org.apache.cassandra.io.sstable.SSTableScanner.hasNext(SSTableScanner.java:183)
      	at org.apache.cassandra.utils.MergeIterator$Candidate.advance(MergeIterator.java:144)
      	at org.apache.cassandra.utils.MergeIterator$ManyToOne.<init>(MergeIterator.java:87)
      	at org.apache.cassandra.utils.MergeIterator.get(MergeIterator.java:46)
      	at org.apache.cassandra.db.compaction.CompactionIterable.iterator(CompactionIterable.java:47)
      	at org.apache.cassandra.db.compaction.CompactionTask.runWith(CompactionTask.java:129)
      	at org.apache.cassandra.io.util.DiskAwareRunnable.runMayThrow(DiskAwareRunnable.java:48)
      	at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
      	at org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:60)
      	at org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:59)
      	at org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionTask.run(CompactionManager.java:198)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      	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:744)
      

      Method acquire() from class com.google.common.util.concurrent.RateLimiter accepts one int parameter but its return value changed. It was void but now it is double. As far as I understand this is the reason for attached exception.

      This problem does not allow us to upgrade CQL driver to version newer than 2.0.0-rc2.

      Attachments

        Activity

          People

            Unassigned Unassigned
            alexander_radzin Alexander Radzin
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: