无法检索端点范围:java.lang.IllegalArgumentException

时间:2016-01-13 03:30:02

标签: cassandra datastax datastax-enterprise bulkloader

我正在使用sstableloader实用程序将sstables加载到cassandra。但我收到以下错误。

> java.lang.IllegalArgumentException
java.lang.RuntimeException: Could not retrieve endpoint ranges: 
    at org.apache.cassandra.tools.BulkLoader$ExternalClient.init(BulkLoader.java:338)
    at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:156)
    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:543)
    at org.apache.cassandra.serializers.CollectionSerializer.readValue(CollectionSerializer.java:124)
    at org.apache.cassandra.serializers.MapSerializer.deserializeForNativeProtocol(MapSerializer.java:101)
    at org.apache.cassandra.serializers.MapSerializer.deserializeForNativeProtocol(MapSerializer.java:30)
    at org.apache.cassandra.serializers.CollectionSerializer.deserialize(CollectionSerializer.java:50)
    at org.apache.cassandra.db.marshal.AbstractType.compose(AbstractType.java:68)
    at org.apache.cassandra.cql3.UntypedResultSet$Row.getMap(UntypedResultSet.java:287)
    at org.apache.cassandra.config.CFMetaData.fromSchemaNoTriggers(CFMetaData.java:1824)
    at org.apache.cassandra.config.CFMetaData.fromThriftCqlRow(CFMetaData.java:1117)
    at org.apache.cassandra.tools.BulkLoader$ExternalClient.init(BulkLoader.java:330)
    ... 2 mor

我用来加载sstable的命令是

$bin/sstableloader -d nodename -u username -pw password path/to/sstable/keyspacename/tablename

这是几天前工作的。我不确定这些是什么改变了,如何调试它? 我正在使用datastax。 我从群集中的同一节点加载sstable。我的源节点和目标节点是相同的。 之前有人见过这个错误吗? Cassandra版本:2.1 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

堆栈跟踪中的异常来自这段代码:

    if (version >= Server.VERSION_3)
    {
        int size = input.getInt();
        if (size < 0)
            return null;

        return ByteBufferUtil.readBytes(input, size); // HERE !
    }

我想知道你是否正在加载由Cassandra 2.1或旧版本生成的sstables ....因为问题似乎是在字节编码级别。

您的SSTable也可能已损坏。

你是如何得到那些sstables的?从另一个Cassandra实例的副本?由CQLSSTableWriter生成?

答案 1 :(得分:0)

我又遇到了这个问题,所以为了根本原因调试了一下。问题是,如果你在任何时候通过删除一些列来改变你的cassandra表。它会触发sstableLoader的错误。这就是为什么放弃桌子并再次创建它的原因。

相关问题