[ 
https://issues.apache.org/jira/browse/CASSANDRA-6030?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13767166#comment-13767166
 ] 

Michaël Figuière edited comment on CASSANDRA-6030 at 9/13/13 11:37 PM:
-----------------------------------------------------------------------

I believe this is due to the fact you're using a wrong version of LZ4.

In 1.0, {{LZ4Decompressor}} is an interface:
https://github.com/jpountz/lz4-java/blob/1.0/src/java/net/jpountz/lz4/LZ4Decompressor.java

In 1.1 it's an abstract class:
https://github.com/jpountz/lz4-java/blob/1.1/src/java/net/jpountz/lz4/LZ4Decompressor.java

In 1.2 it's an interface:
https://github.com/jpountz/lz4-java/blob/1.2/src/java/net/jpountz/lz4/LZ4Decompressor.java

Cassandra 2.0.0 depends on 1.1 (see 
http://repo1.maven.org/maven2/org/apache/cassandra/cassandra-all/2.0.0/cassandra-all-2.0.0.pom)
 and DataStax Java Driver 2.0.0-beta1 depends on 1.2.

If you need to use {{cassandra-all}} and the Java Driver, then I can only 
suggest you to rebuild the driver 2.0.0-beta1 as found at 
https://github.com/datastax/java-driver/tree/2.0.0-beta1 with the appropriate 
dependency. We'll consider fixing this conflict in the next beta of the driver.
Note that this is normally not a problem as the Java Driver doesn't depends 
(anymore) on {{cassandra-all}}. So when using the {{EmbeddedCassandraService}} 
be sure to force {{net.jpountz.lz4 1.1}} in the dependencies of your 
application.
                
      was (Author: mfiguiere):
    I believe this is due to the fact you're using a wrong version of LZ4.

In 1.0, {{LZ4Decompressor}} is an interface:
https://github.com/jpountz/lz4-java/blob/1.0/src/java/net/jpountz/lz4/LZ4Decompressor.java

In 1.1 it's an abstract class:
https://github.com/jpountz/lz4-java/blob/1.1/src/java/net/jpountz/lz4/LZ4Decompressor.java

In 1.2 it's an interface:
https://github.com/jpountz/lz4-java/blob/1.2/src/java/net/jpountz/lz4/LZ4Decompressor.java

Cassandra 2.0.0 depends on 1.1 (see 
http://repo1.maven.org/maven2/org/apache/cassandra/cassandra-all/2.0.0/cassandra-all-2.0.0.pom)
 and DataStax Java Driver 2.0.0-beta1 depends on 1.2.
Note that this is normally not a problem as the Java Driver doesn't depends 
(anymore) on {{cassandra-all}}. So when using the {{EmbeddedCassandraService}} 
be sure to force {{net.jpountz.lz4 1.1}} in the dependencies of your 
application.
                  
> java.lang.IncompatibleClassChangeError when starting EmbeddedCassandraService
> -----------------------------------------------------------------------------
>
>                 Key: CASSANDRA-6030
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6030
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core, Documentation & website
>         Environment: Linux 64 bit Ubuntu, JAVA 1.7
>            Reporter: Jinder Aujla
>         Attachments: jar hell.png
>
>
> When I try to start EmbeddedCassandraService thus:
> EmbeddedCassandraService cassandra = new EmbeddedCassandraService();
> cassandra.start();
> I get the following exception
> java.lang.IncompatibleClassChangeError: Found interface 
> net.jpountz.lz4.LZ4Decompressor, but class was expected
>       at 
> org.apache.cassandra.io.compress.LZ4Compressor.uncompress(LZ4Compressor.java:84)
>       at 
> org.apache.cassandra.io.compress.CompressedRandomAccessReader.decompressChunk(CompressedRandomAccessReader.java:116)
>       at 
> org.apache.cassandra.io.compress.CompressedRandomAccessReader.reBuffer(CompressedRandomAccessReader.java:85)
>       at 
> org.apache.cassandra.io.util.RandomAccessReader.seek(RandomAccessReader.java:275)
>       at 
> org.apache.cassandra.io.util.PoolingSegmentedFile.getSegment(PoolingSegmentedFile.java:42)
>       at 
> org.apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:1093)
>       at 
> org.apache.cassandra.db.columniterator.SimpleSliceReader.<init>(SimpleSliceReader.java:57)
>       at 
> org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(SSTableSliceIterator.java:65)
>       at 
> org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SSTableSliceIterator.java:42)
>       at 
> org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:171)
>       at 
> org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:62)
>       at 
> org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:269)
>       at 
> org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:53)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1469)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1295)
>       at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:332)
>       at 
> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:65)
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.readLocally(SelectStatement.java:231)
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:249)
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:56)
>       at 
> org.apache.cassandra.cql3.QueryProcessor.processInternal(QueryProcessor.java:151)
>       at 
> org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:459)
>       at 
> org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:227)
>       at 
> org.apache.cassandra.service.CassandraDaemon.init(CassandraDaemon.java:377)
>       at 
> org.apache.cassandra.service.EmbeddedCassandraService.start(EmbeddedCassandraService.java:52)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to