Cassandra中复制品之间的计数器值不一致

时间:2011-08-08 09:58:42

标签: java nosql cassandra hector

我有一台3机Cassandra集群,使用机架无意识的展示位置策略,复制系数为2.

列族的定义如下:

create column family UserGeneralStats  with  comparator = UTF8Type  and default_validation_class = CounterColumnType;

不幸的是,经过几天的生产使用后,我得到了一些不一致的计数器值:

查询副本1:

[default@StatsKeyspace] list UserGeneralStats['5261666978': '5261666978'];  
Using default limit of 100
-------------------
RowKey: 5261666978
=> (counter=bandwidth, value=96545030198)
=> (counter=downloads, value=1013)
=> (counter=previews, value=10304)

查询副本2:

[default@StatsKeyspace] list UserGeneralStats['5261666978': '5261666978'];
Using default limit of 100
-------------------
RowKey: 5261666978
=> (counter=bandwidth, value=9140386229)
=> (counter=downloads, value=339)
=> (counter=previews, value=1321)

由于标准的读取修复机制似乎没有修复我试图强制的值 使用nodetool修复的抗熵修复。它对计数器值没有任何影响。

数据检查显示计数器的值较低是正确的,所以我怀疑Cassandra(或者我用作API的Hector从Java调用Cassandra)重试了一些增量。

任何想法如何修复数据并可能阻止再次发生这种情况?

1 个答案:

答案 0 :(得分:0)

如果RR和修复都没有修复它,那可能是一个错误。

请升级到0.8.3(今天发布)并确认该版本仍然存在,然后您可以https://issues.apache.org/jira/browse/CASSANDRA提交一张票。