Rich Adams
Rich Adams

Reputation: 1

SSTableLoader java.nio.Buffer.limit / Failed to list files

Using SSTableLoader (data source instance and target of SSTableLoader are both cassandra 3.0.23), succeeds on all the tables except one: How should I go about diagnosing this: (note, the folder in question, /var/lib/cass-bk-tmp/local/intervals, does appear to have the sstables and other data produced by nodetool snapshot)

Failed to list files in /var/lib/cass-bk-tmp/local/intervals
java.lang.IllegalArgumentException
java.lang.RuntimeException: Failed to list files in /var/lib/cass-bk-tmp/local/intervals
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:77)
        at org.apache.cassandra.db.lifecycle.LifecycleTransaction.getFiles(LifecycleTransaction.java:599)
        at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:76)
        at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:165)
        at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:106)
Caused by: java.lang.IllegalArgumentException
        at java.nio.Buffer.limit(Buffer.java:275)
        at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:669)
        at org.apache.cassandra.utils.ByteBufferUtil.readBytesWithShortLength(ByteBufferUtil.java:678)
        at org.apache.cassandra.db.marshal.CompositeType.splitName(CompositeType.java:201)
        at org.apache.cassandra.db.Serializers$1.deserialize(Serializers.java:88)
        at org.apache.cassandra.db.Serializers$1.deserialize(Serializers.java:60)
        at org.apache.cassandra.io.sstable.IndexHelper$IndexInfo$Serializer.deserialize(IndexHelper.java:148)
        at org.apache.cassandra.db.RowIndexEntry$Serializer.deserialize(RowIndexEntry.java:218)
        at org.apache.cassandra.io.sstable.format.SSTableReader.buildSummary(SSTableReader.java:825)
        at org.apache.cassandra.io.sstable.format.SSTableReader.openForBatch(SSTableReader.java:429)
        at org.apache.cassandra.io.sstable.SSTableLoader.lambda$openSSTables$0(SSTableLoader.java:121)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.lambda$innerList$2(LogAwareFileLister.java:99)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
        at java.util.TreeMap$EntrySpliterator.forEachRemaining(TreeMap.java:2969)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.innerList(LogAwareFileLister.java:101)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:73)
        ... 4 more

Upvotes: 0

Views: 157

Answers (1)

Erick Ramirez
Erick Ramirez

Reputation: 16393

It looks like sstableloader is running into an issue when extracting the column name reading through the -Index.db file of one of the SSTables based on this section of the stacktrace:

  ...
  at org.apache.cassandra.db.marshal.CompositeType.splitName(CompositeType.java:201)
  at org.apache.cassandra.db.Serializers$1.deserialize(Serializers.java:88)
  at org.apache.cassandra.db.Serializers$1.deserialize(Serializers.java:60)
  at org.apache.cassandra.io.sstable.IndexHelper$IndexInfo$Serializer.deserialize(IndexHelper.java:148)
  at org.apache.cassandra.db.RowIndexEntry$Serializer.deserialize(RowIndexEntry.java:218)
  at org.apache.cassandra.io.sstable.format.SSTableReader.buildSummary(SSTableReader.java:825)
  ...

I don't have enough information to really understand what's going on but perhaps try to workaround it by loading a handful of SSTables at a time.

If you could load just one SSTable, it would at least confirm that it's not a mismatch between the schema in the target cluster and the schema of SSTable when the snapshot was taken. Cheers!

Upvotes: 0

Related Questions