Reputation: 1
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
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