在 Cassandra 中加载 range_slices 时出现问题
我在从 Cassandra 获取数据时遇到了一点问题。主要问题是这个异常:
ERROR 15:45:07,037 Internal error processing get_range_slices java.lang.AssertionError: (162293240116362681726824838407749997815,35552186147124906726154103286687761342] at org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1251) at org.apache.cassandra.service.StorageProxy.getRangeSlice(StorageProxy.java:428) at org.apache.cassandra.thrift.CassandraServer.get_range_slices(CassandraServer.java:513) at org.apache.cassandra.thrift.Cassandra$Processor$get_range_slices.process(Cassandra.java:2868) at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555) at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:167) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619)
那我该怎么办?我使用describe_ring
来获取网络的拓扑,然后我询问网络中的每个节点describe_splits
,这给了我应该用来获取范围的令牌,并且然后我开始询问它们,确保我在键范围上设置了 start_token
和 end_token
。
有什么想法吗?
I'm having just a little bit of trouble getting data out of Cassandra. The main problem is this exception:
ERROR 15:45:07,037 Internal error processing get_range_slices java.lang.AssertionError: (162293240116362681726824838407749997815,35552186147124906726154103286687761342] at org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1251) at org.apache.cassandra.service.StorageProxy.getRangeSlice(StorageProxy.java:428) at org.apache.cassandra.thrift.CassandraServer.get_range_slices(CassandraServer.java:513) at org.apache.cassandra.thrift.Cassandra$Processor$get_range_slices.process(Cassandra.java:2868) at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555) at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:167) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619)
So what do I do? I use describe_ring
to get the topology of the network, then I ask each of the nodes in the network describe_splits
which gives me the tokens I should use to fetch the ranges, and then I just start asking for them, making sure that I set the start_token
and end_token
on the keyranges.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是 0.6.9 和 0.7rc2 修复的错误。
That's a bug fixed for 0.6.9 and 0.7rc2.