Cassandra一致性失败

时间:2015-05-26 22:18:09

标签: cassandra cql datastax datastax-enterprise cql3

[更新]

之前的陈述非常具有误导性,所以我在这里详细阐述:

我运行了一个测试,它通过PHP中的Thrift协议发送查询,脚本如下:

for ($i=0; $i<100; $i++) {  
    $query = "update ns.table set value='before' where key='key$i';";  
    // randomly select a node and send query  
}  

for ($i=0; $i<100; $i++) {  
    $query = "update ns.table set value='after' where key='key$i';";  
    // randomly select a node and send query  
}  

表开始为空,在测试之后,只有某些行包含值“after”,而大多数行包含“before”。

整个测试过程中我没有收到任何错误。所以第二个循环中的查询无声地失败了。

所有查询都以一致性级别ALL发送,表格的复制因子为2.

我的cassandra版本是DSE 4.6.3,集群总共有39个节点。

[Update2]

在两个循环之间进行睡眠(3秒)之后,测试现在可以给出正确的结果,表中的所有行都具有值“after”。

但这仍然令人困惑,因为对于一致性级别ALL我期望所有查询都是事务性的。不需要睡眠功能。

1 个答案:

答案 0 :(得分:1)

同步节点时钟后问题已解决。

感谢@mshuler指出。