You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Chris Cleveland (JIRA)" <ji...@apache.org> on 2013/10/18 19:00:45 UTC

[jira] [Commented] (CASSANDRA-6030) java.lang.IncompatibleClassChangeError when starting EmbeddedCassandraService

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

Chris Cleveland commented on CASSANDRA-6030:
--------------------------------------------

This is a major issue for us. It's a show-stopper.

The problem is that the Datastax java driver 2.x depends on the lz4 library, version 1.2.0. Cassandra-all 2.0.1 depends on lz4 version 1.1.0. The two versions are incompatible. 

What this means is that you can't use the Datastax driver in the same JVM as Cassandra, which means that you can't do embedded Cassandra at all.

It's probable that no one detected the problem because it doesn't show up when Cassandra and the driver are in different JVMs with different classpaths.

The solution is simple: upgrade Cassandra to use 1.2.0 of the lz4 library. I think it would be a bad idea to force the Datastax driver back to an earlier version.

> 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 was sent by Atlassian JIRA
(v6.1#6144)