0

使用 SSTableLoader(SSTableLoader 的数据源实例和目标都是 cassandra 3.0.23),在所有表上都成功,除了一个:我应该如何诊断这个:(注意,有问题的文件夹 /var/lib/cass-bk -tmp/local/intervals,似乎确实有由 nodetool 快照生成的 sstables 和其他数据)

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
4

1 回答 1

0

根据堆栈跟踪的这一部分,提取通过其中一个 SSTablessstableloader的文件读取的列名时,似乎遇到了问题:-Index.db

  ...
  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)
  ...

我没有足够的信息来真正了解发生了什么,但也许尝试通过一次加载少量 SSTables 来解决它。

如果您只能加载一个 SSTable,它至少可以确认目标集群中的架构与拍摄快照时的 SSTable 架构之间没有不匹配。干杯!

于 2021-09-23T23:57:07.860 回答