spring boot—为什么即使满足一致性级别,cassandra写入也会失败?

cgyqldqp  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(453)

我有以下配置的cassandra群集设置gurations:-
nodes:- 3
datacenter:- dc1
复制factor:-3
有限公司nsistency:- local_quorum
我创建了一个示例spring引导api,它递归地插入keyspace(test)中的表(testing1)。
在执行写操作之前,我使用tc命令在其中一个节点中引入了延迟(2100ms)作为响应,因此当执行写操作时,我们得到writetimeoutexception,因为在cassandra.yaml中write_request_timeout设置为2000ms。cassandra仍然应该成功地执行写操作,因为确认到met一致性级别(2)所需的节点正在毫无延迟地工作,但是我得到了以下结果exception:-
com.datastax.driver.core.exceptions.writetimeoutexception:在一致性本地\u仲裁的写入查询期间,cassandra超时(需要2个副本,但只有1个确认了写入)。
为什么即使需要确认的节点(2)已启动并正在运行,写入也会失败?

rbl8hiat

rbl8hiat1#

写入必须在超时时间内完成,才能获得超时异常。不管节点是否启动。
cassandra仍然应该成功地执行写操作,因为需要节点确认到met一致性级别(2)
不,不应该也不会。如果超时已经超过,节点可能会放弃变异并依赖提示、读取修复和反熵修复来解决它。变异的状态是未知的,并作为错误返回,因此可以重试,或者至少不假定在仲裁中应用,这样就不会破坏一致性契约。

相关问题